2016-11-16 41 views
0

我有這樣的選擇的毗連列MYSQL

SELECT page.*, page_lang.*, category.title as category FROM page 
JOIN page_lang ON page.id = page_lang.id_page 
JOIN relation ON page.id = relation.from_id 
JOIN page_lang as category ON category.id_page = relation.to_id 
WHERE page.type = 'blog-detail' 
AND relation.type = 1 

此返回重複的行,當一個頁面有兩個或多個類別

ID PAGE | TITLE | CATEGORIES
1 |標題1 |類別1
2 |標題2 |類別1
3 |標題3 |類別2
1 |標題1 |第2類

但我想這

ID PAGE | TITLE | CATEGORIES
1 |標題1 |類別1,類別2
2 |標題2 |類別1
3 |標題3 | 2類

如果我使用GROUP_CONCAT(category.title)返回1行。

+0

什麼是'page'表中的'TITLE'列的名稱?我懷疑你向我們展示的查詢實際上是否生成給定的輸出。 –

回答

1

你應該使用GROUP_CONCAT:

SELECT page.*, page_lang.*, group_concat(distinct category.title) as category FROM page 
JOIN page_lang ON page.id = page_lang.id_page 
JOIN relation ON page.id = relation.from_id 
JOIN page_lang as category ON category.id_page = relation.to_id 
WHERE page.type = 'blog-detail' 
AND relation.type = 1 
GROUP BY page.id 
+0

謝謝!其作品! – NARTONIC

0

嘗試使用命令 「UNIQUE」

SELECT UNIQUE page.*, page_lang.*, category.title as category FROM page 
JOIN page_lang ON page.id = page_lang.id_page 
JOIN relation ON page.id = relation.from_id 
JOIN page_lang as category ON category.id_page = relation.to_id 
WHERE page.type = 'blog-detail' 
AND relation.type = 1 
+0

這不會提供所需的輸出。 –