2016-09-15 81 views
0

我遇到了以我需要的方式連接我的MySQL結果的問題,所以小小的幫助將不勝感激。在MySQL查詢中複雜連接

我有樹表 - 職位,類別,posts_categories:

帖子:

+----------+ 
| Field | 
+----------+ 
| id  | 
| title | 
| body  | 
| date  | 
+----------+ 

類別:

+---------------+ 
| Field   | 
+---------------+ 
| id   | 
| category_name | 
+---------------+ 

posts_categories:

+-------------+ 
| Field  | 
+-------------+ 
| id   | 
| post_id  | 
| category_id | 
+-------------+ 

我目前的MySQL查詢獲取所有類別名稱上崗:

SELECT 
    posts.*, categories.category_name 
FROM 
    posts, 
    categories, 
    posts_categories 
WHERE 
    posts_categories.category_id = categories.id 
     AND posts.id = posts_categories.post_id; 

以上查詢的結果:

id  | title | posts.category_name 
0   title1  category1 
0   title1  category3 
0   title1  category6 
1   title2  category9 

但是我想串聯CATEGORY_NAME,讓我的MySQL查詢結果在一行中顯示每篇文章的所有類別名稱。 Lke this:

id  | title | posts.category_name 
0   title1  category1, category3, category6 
1   title2  category9 

我該怎麼做?

回答

0

集團通過你的posts列和使用group_concat()得到類別

SELECT posts.id, posts.title, 
     group_concat(categories.category_name separator ', ') 
FROM posts 
LEFT JOIN posts_categories ON posts.id = posts_categories.post_id 
LEFT JOIN categories ON posts_categories.category_id = categories.id 
GROUP BY posts.id, posts.title 

BTW不要使用舊聯接語法了名單。在我的查詢中使用顯式JOIN類型。

+0

這就是我需要的。謝謝! – MerkisL