2015-05-11 90 views
-1

我得到了一個關於MySQL的問題,並找到了正確的查詢。將查詢結果分成一行

目前,我得到這個查詢:

SELECT f.id 
, f.name 
, e.name as exhibition_name 
, l.name as `language` 
FROM `app_forms` f 
LEFT JOIN `app_exhibitions` e ON(f.id = e.form_id) 
LEFT JOIN `app_forms_translations` ft ON(ft.form_id = f.id) 
LEFT JOIN `app_languages` l ON(ft.lang_id = l.id) 

這種結合記錄從下表:

app_exhibitions 
-id 
-name 
-location 
-form_id 

app_forms 
-id 
-name 

app_form_translations 
-id 
-form_id 
-lang_id 
-content 

app_languages 
-id 
-name 
-code 

但現在我得到的多條記錄,如果有一個單一的展覽多種形式,哪些列表形式是雙重的,但每個列表都有不同的展覽。我希望他們組合起來,這樣我就可以獲得每一個表格的單行,但是展覽會與concat分組在一起。

我已經試過這個,但是我得到了一個記錄,列出了展覽專欄中列出的每一個展覽名稱。

SELECT f.id 
    , f.name 
    , group_concat(e.name separator ',') as exhibition name 
    , l.name as `language` 
FROM `app_forms` f 
LEFT JOIN `app_exhibitions` e ON(f.id = e.form_id) 
LEFT JOIN `app_forms_translations` ft ON(ft.form_id = f.id) 
LEFT JOIN `app_languages` l ON(ft.lang_id = l.id) 
+0

此查詢失敗。是別名「exhiibition」[原文如此]或「名字」 – Strawberry

回答

1

您需要group by

SELECT f.id, 
     f.name, 
     group_concat(e.name separator ',') as exhibition name, 
     l.name as `language` 
FROM `app_forms` f 
LEFT JOIN `app_exhibitions` e ON(f.id = e.form_id) 
LEFT JOIN `app_forms_translations` ft ON(ft.form_id = f.id) 
LEFT JOIN `app_languages` l ON(ft.lang_id = l.id) 
GROUP BY f.id, f.name, l.name; 
+0

這確實是正確的答案。謝謝。我會將你的答案標記爲〜8分鐘:) –