2013-06-28 27 views
1

我有表CONCAT_WS行JOIN

profiles (id, name, deleted) 
categories (id, name, deleted) 
profiles_categories (id, profile_id, category_id, , deleted) 

錯誤查詢

SELECT p.id, p.name CONCAT_WS(', ', c.name) AS keywords_categories 
FROM profiles p 
LEFT JOIN profiles_categories pc ON p.id = pc.profile_id 
LEFT JOIN categories c ON pc.id = c.id 
WHERE p.deleted = FALSE 

所以,我想有所有profiles與concan categories.name結果。

感謝

+0

你想返回逗號分隔每個配置文件的「類別」列表?或者你想顯示什麼結果? – Taryn

回答

4

這是不完全清楚,但好像你真的想使用GROUP_CONCAT這將創建一個逗號所有類別的每個配置文件的分隔列表:

SELECT p.id, 
    p.name, 
    GROUP_CONCAT(c.name SEPARATOR ', ') AS keywords_categories 
FROM profiles p 
LEFT JOIN profiles_categories pc ON p.id = pc.profile_id 
LEFT JOIN categories c ON pc.id = c.id 
WHERE p.deleted = FALSE 
GROUP BY p.id, p.name 
+0

不錯,但此代碼只返回第一個配置文件,其中有類別,另一個誰沒有類別不顯示... –

+2

@AlexKiselev我不明白你的問題,這將返回所有配置文件,即使沒有類別。看到這個演示 - http://sqlfiddle.com/#!2/eaaec/2 – Taryn

+0

對不起,這真的有用! –