php / mySQL Как мне получить все теги из базы данных для нескольких элементов? - PullRequest
2 голосов
/ 09 марта 2011

У меня есть 3 таблицы, которые выглядят следующим образом:

  • content
    • cid
    • data
  • contenttags
    • cid
    • tid
  • теги
    • tid
    • тег

Я пытаюсь выбрать 5 элементов из таблицы содержимого, отображая каждый тег, связанный с содержимым.Вот что у меня есть -

SELECT c.*, t.tag FROM content AS c LEFT JOIN contenttags AS ct ON c.cid = ct.cid LEFT JOIN tags AS t ON ct.tid = t.tid LIMIT 5

Но все, что я, похоже, получаю, это множество дублирующихся строк с единственным отличием - это тег.Я думал, в идеале, все теги могут быть объединены в SQL в одном поле?Я не знаю, я все это делаю неправильно?

1 Ответ

3 голосов
/ 09 марта 2011

вы можете использовать функцию GROUP_CONCAT(), которая будет возвращать теги через запятую:

SELECT c.*, GROUP_CONCAT(t.tag) AS Tags
FROM content AS c 
  LEFT JOIN contenttags AS ct ON c.cid = ct.cid 
  LEFT JOIN tags AS t ON ct.tid = t.tid 
GROUP BY c.cid 
LIMIT 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...