2012-03-29 50 views
0

我有三个表,就像这样:有没有办法显示关联的查询作为行?

#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个标签。 任何想法,以获得预期的结果?

回答

4

Uou应该使用聚合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 
+0

该死的..我太慢了.. +1,另外,如果'KEY'的都是一样的,你可以用'加入foo使用(bar_id)' – 2012-03-29 17:03:28

+0

GROUP_CONCAT真的好东西 – 2012-03-30 02:54:01

相关问题