【发布时间】:2013-12-01 23:59:38
【问题描述】:
我有以下查询,其目的是显示包含一系列“标签”的“项目”列表。此外,我选择为每个“项目”仅显示“5”个标签,如下所示:
$query = mysql_query("SELECT i.*,
SUBSTRING_INDEX(GROUP_CONCAT(t.name), ',', 5) tagList
FROM items AS i
LEFT JOIN tag_rel AS tr ON (tr.item = i.id)
LEFT JOIN tags AS t ON (t.id = tr.tag)
GROUP BY i.id");
好的,那太好了。它给了我这样的东西:
[项目1]标签1,标签2,标签3,标签6,标签8
[项目2]标签1,标签3,标签11,标签15,标签16
[项目3]标签2,标签4,标签5,标签6,标签7
等
但事情是这样的:如果想通过添加“tag2”来显示“项目”列表:
WHERE (t.name LIKE 'tag2')
我的结果很简单:
[项目 1] tag2
[项目 3] tag2
向我展示实际上标有“tag2”但“标签”仅限于该标签的项目。结果,我真正想要的是这两个项目(标记为“tag2”的项目)及其所有标签:
[项目1]标签1,标签2,标签3,标签6,标签8
[项目 3] tag2,tag4,tag5,tag6,tag7
我试过用
WHERE (tagList LIKE '%tag2%')
但这只是给了我:
Invalid query: Unknown column 'tagList' in 'where clause'
我希望我说清楚了。非常感谢!
【问题讨论】:
-
请添加您数据库的简短示例转储,以便其他人可以使用它来尝试答案。
标签: mysql database-design