sql group_concat和子查询

时间:2013-10-11 06:31:40

标签: mysql subquery group-concat

我有2个mysql表:

 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:

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

问题: 如果为id,如何从car_model表中获取此字符串的标题 - 例如12,45,67,78。我想在1个查询中执行此操作 - 自定义查询

更新 现在我有另一个问题: 我还有一张桌子:

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

在我的car_model表格中有一个字段 id_brand

问题2: 我如何从car_model获取标题形式car_brand - 像这样 - 福特福克斯,菲亚特Linea等等 - 现在我得到(在你的帮助下)从car_model获取标题 现在我有:12 - 焦点,Linea

更新 我用 -

解决了这个问题
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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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上加入car_model表格,将ID替换为实际标题。