2012-03-29 8 views
0

私はこのように、3つのテーブルを持っている:関連付けられたクエリを行として表示する方法はありますか?

#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 

そして、私は、PHPファイル内

Blog_title Tag_name 
My first blog Sport 
My second blog Sport, Music 

として自分のWebページでそれらを表示するには、

if ($query->num_rows() > 0) 
{ 
    foreach ($query->result() as $row) 
    { 
     echo $row->title; 
     echo $row->tag; 
    } 
} 

しかし、同じよう気にいらをしています私は結合を使用すると、その行を1行ずつ表示する3行を表示します。 予想どおりの結果を得るための考え方はありますか?

答えて

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

気に..私は 'ONの両側にKEY'年代が同じである'あれば、あなたが使用することができ、また、1 ...遅すぎましたJOIN foo USING(bar_id) ' –

+0

GROUP_CONCAT本当に素敵なもの –

関連する問題