代码之家  ›  专栏  ›  技术社区  ›  programmer

sql group_concat和子查询

  •  3
  • programmer  · 技术社区  · 11 年前

    我有两个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-by:

    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。我想在一个查询中完成它——自定义我的查询

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

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

    在我的car_model表中有一个字段 id品牌

    问题2: 我如何从car_brand中获取标题,并从car_model中获取名称-像这样-福特福克斯、菲亚特Linea等等-现在我可以(在你的帮助下)从car_mode中仅获取标题 现在我有: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
    
    2 回复  |  直到 11 年前
        1
  •  4
  •   Sashi Kant    11 年前

    试试这个:

    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
    
        2
  •  4
  •   juergen d    11 年前
    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
    

    您可以通过加入 car_model 要替换的ID上的表。