Нормализация базы данных на левое соединение?

Я хотел загрузить все свои теги записей одним запросом на сервер MySQL.

Теперь я решил использовать LEFT JOIN, потому что, если с моим постом не связано никаких тегов, то у меня тоже будет этот пост, или у вас есть другие предложения для этого?
Вот мой запрос:

SELECT * FROM tags, tags_map
LEFT JOIN posts on posts.cid = tags_map.pid
WHERE tags.tag_id = tags_map.tid

Теперь проблема заключается в дублировании данных, например, если сообщение имеет три тега, то само сообщение будет повторяться три раза!
В этом случае я должен выполнить другой запрос для каждого сообщения, чтобы иметь свои теги? или я могу получить их все одним запросом, но без дубликатов данных?

-1

Решение

Я думаю ты хочешь 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, я могу проверить.

1

Другие решения

Других решений пока нет …