有没有办法将关联查询显示为行?

时间:2012-03-29 16:50:03

标签: php mysql codeigniter

我有三张桌子,如下:

#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个标记。 有任何想法可以得到预期的结果吗?

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