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

내가 PHP 파일에서

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

으로 내 웹 페이지를 표시 할이

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

그러나 같은 뭔가를해야만하고있는 중이 야 조인을 사용하면 한 줄씩 태그가있는 3 줄이 표시됩니다. 예상되는 결과를 얻으려고 생각하십니까?

답변

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 
+0

저주를 ... 또한 +1,'경우 KEY' 년대를 ON의 양쪽에있는 같은, 당신은'사용할 수 있습니다 JOIN foo USING (bar_id)' –

+0

GROUP_CONCAT 정말 좋은 물건들 –

관련 문제