我有三张桌子,如下:
#Blog:
ID | Title
1 "My first blog"
2 "My second blog"
#Tags:
ID | Name
1 "Sport"
2 "Music
#tag_blog
Blog_id | Tag_id
1 1
2 1
2 2
我希望在我的网页中显示它们
Blog_title Tag_name
My first blog Sport
My second blog Sport, Music
在php文件中我正在做像这样的事情
if ($query->num_rows() > 0)
{
foreach ($query->result() as $row)
{
echo $row->title;
echo $row->tag;
}
}
但是当我使用连接时,它显示3行,每行有1个标记。 有任何想法可以得到预期的结果吗?
答案 0 :(得分:4)
你应该使用聚合GROUP_CONCAT函数 -
SELECT b.Title AS Blog_title, GROUP_CONCAT(t.name) AS Tag_name FROM Blog b
JOIN tag_blog tb
ON tb.Blog_id = b.Blog_id
JOIN Tags t
ON t.Tag_id = tb.Tag_id
GROUP BY b.ID