Я хотел загрузить все свои теги записей одним запросом на сервер MySQL.
Теперь я решил использовать LEFT JOIN, потому что, если с моим постом не связано никаких тегов, то у меня тоже будет этот пост, или у вас есть другие предложения для этого?
Вот мой запрос:
SELECT * FROM tags, tags_map
LEFT JOIN posts on posts.cid = tags_map.pid
WHERE tags.tag_id = tags_map.tid
Теперь проблема заключается в дублировании данных, например, если сообщение имеет три тега, то само сообщение будет повторяться три раза!
В этом случае я должен выполнить другой запрос для каждого сообщения, чтобы иметь свои теги? или я могу получить их все одним запросом, но без дубликатов данных?
Я думаю ты хочешь GROUP_CONCAT
SELECT posts.*,
(select GROUP_CONCAT(tags.name)
from tags,
tags_map
LEFT JOIN on posts.cid = tags_map.pid
WHERE tags.tag_id = tags_map.tid) as tagCombo
from posts
Если вы публикуете схему, примеры данных и ожидаемые результаты, в идеале как SQLFiddle, я могу проверить.
Других решений пока нет …