php / mySQL如何从数据库中获取多个项目的所有标签?

时间:2011-03-09 04:37:59

标签: php mysql tags

我有3张看起来像这样的表 -

  • 内容
    • CID
    • 数据
  • 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 个答案:

答案 0 :(得分:3)

您可以使用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