2013-10-11 244 views
3

我有2個MySQL表:SQL GROUP_CONCAT和子查詢

car_model: 
    id (int) (Primary Key) 
    title (varchar) 
    id_brand (int) FK to car_brand table 



car__car_model: - relation many to many 
    id_model (int) 
    id_advice_model (int) 

在car__car_model有以下數據:

(id_model) (id_advice_model) 
12   12 
12   45 
12   67 
12   78 
13   13 
13   12 
13   67 
13   105 

而且我想這樣來獲取這樣的數據:

12 12,45,67,78 
13 13.12.67,105 

我用group_concat和group by像這樣:

SELECT ccm.id_model,group_concat(ccm.id_advice_model) FROM car__car_model as ccm group by ccm.id_model 

問: 如何能爲這個字符串,如果IDS獲取來自car_model表格標題 - 例如用於12,45,67,78。我想這樣做在1個查詢 - 定製我的查詢

更新時間: ,現在我還有一個問題: 我還有一個表:

car_brand: 
    id (int) (PK) 
    title (varchar) 

,並在我的car_model桌上有是場id_brand

問題2: 我怎麼能取標題的形式car_brand的標題從car_model - 這樣的 - 福特福克斯,菲亞特凌特等 - 現在我得到(你幫)來從car_model 只有標題現在我有:12 - 福克斯,凌特

更新時間: 我解決使用這個問題 -

SELECT 
id_model,group_concat(concat(cb.title,' ',cm.title)) 
FROM 
car__car_model as ccm 
inner join car_model cm on (cm.id = ccm.id_advice_model) 
inner join car_brand cb on (cb.id=cm.id_brand) 
group by ccm.id_model 

回答

4

試試這個::

SELECT 
ccm.id_model,group_concat(cm.tile, SEPARATOR ',') 
FROM 
car__car_model as ccm 
inner join car_model cm on (cm.id = ccm.id_advice_model) 
group by ccm.id_model 
+0

是的。它的工作原理 - 謝謝 – programmer

4
SELECT ccm.id_model, 
     group_concat(cm.title) 
FROM car__car_model as ccm 
inner join car_model cm on cm.id = ccm.id_advice_model 
group by ccm.id_model 

您可以通過加入代替實際標題的ID您要替換的ID的car_model表。

+0

+1的諷刺相似性(有什麼可能性?);) – jerdiggity

+3

它從一開始就不相似;) –

+0

非常感謝 – programmer