我正在尝试为项目实施标签系统。标签包含在一个名为 tags 的表中,我有另一个表 tagitem 将项目链接到标签。一个项目可以有多个标签。当我显示该项目时,我想列出所有标签。我的问题是,有没有办法用一个查询来做到这一点?如果我将项目结果加入标签表,我会为一个项目获得多条记录(对应于多个标签),或者如果我按标签包含一个分组,我会得到一条记录但只有第一个标签。
另一种方法是进行第二次查询以获取标签,但这似乎效率低下。
Item table
Id | name
Tag table
Id | tag
Tagitem table
Id|itemid|tagid
Php
$sql = "select i.*,ti.*,t.*
FROM 'items' i
LEFT JOIN 'tagitem' ti
ON i.id=ti.itemid
LEFT JOIN 'tag' t
On ti.tagid=t.id
WHERE i.id='2'";
//returns multiple records
$sql.="group by i.id";
//returns only first tag
感谢您的任何建议。