2012-03-29 48 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

相關問題