2013-10-11 4 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 и группу следующим образом:

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

Вопрос: Как извлечь из названия car_model таблицы для этой строки, если ид - например, для 12,45,67,78. И я хочу сделать это в 1 запрос - настроить мой запрос

Обновлено: И теперь у меня есть еще один вопрос: У меня есть еще одна таблица:

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

и в моем car_model столе это поле id_brand

Вопрос 2: Как я принести название формы car_brand с названием из car_model - как это - Ford Focus, Fiat Linea и так далее - Теперь я (с вами помощь), чтобы принести только название от car_model Теперь у меня есть: 12 - Focus, 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 

ответ

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 

Вы можете заменить идентификаторы с фактическим названием путем присоединения таблицу car_model на идентификаторах, которые вы хотели бы заменить.

+0

+1 за ироническое сходство (каковы шансы?);) – jerdiggity

+3

С самого начала не было похоже;) –

+0

Большое спасибо – programmer

Смежные вопросы