2014-11-24 3 views
-1

Я хочу получить результат из этого запроса, но у меня проблема с использованием group_concat с max case.Как использовать GROUP_CONCAT с MAX (CASE WHEN ...)?

SELECT 
    t1.id, 
    t1.name, 
    MAX(CASE WHEN t2.code = t1.f_name THEN t2.name END) AS name2, 
    MAX(CASE WHEN t2.code = t1.l_name THEN t2.name END) AS name3, 
    MAX(CASE WHEN t2.code = t1.a_name THEN t2.name END) AS name4, 
    GROUP_CONCAT(MAX(CASE WHEN FIND_IN_SET(t3.code,t1.vehicles) THEN t3.name END) AS car_owned) 
    GROUP_CONCAT(MAX(CASE WHEN FIND_IN_SET(t3.code,t1.homes) THEN t3.name END) AS home_owned) 
FROM 
    first_table AS t1 LEFT JOIN second_table AS t2 
    ON t2.code IN (t1.f_name, t1.l_name, t1.a_name) 
    LEFT JOIN second_table AS t3 ON FIND_IN_SET(t3.code,t1.vehicles) > 0 OR FIND_IN_SET(t3.code,t1.homes) > 0 
GROUP BY 
    t1.id, 
    t1.name 

за любую помощь спасибо. скрипку here

+0

Не уверен, что я следую. Можете ли вы поделиться некоторыми примерами данных и результатом, который вы пытаетесь получить? – Mureinik

+0

Я не знаю, что вы пытаетесь сделать – Strawberry

+0

@Strawberry У меня проблема с выбором конкатенированного столбца в столбце first_table home, а у транспортных средств есть связанное значение, которое появилось из второй таблицы, теперь я хочу взять родственное имя из second_table. – jones

ответ

0

Попробуйте

SELECT 
    t1.id, 
    t1.name, 
    CASE WHEN t2.code = t1.f_name THEN t2.name END AS name2, 
    CASE WHEN t2.code = t1.l_name THEN t2.name END AS name3, 
    CASE WHEN t2.code = t1.a_name THEN t2.name END AS name4, 
    CASE WHEN FIND_IN_SET(t3.code,t1.vehicles) > 0 THEN GROUP_CONCAT(DISTINCT(t3.name END)) AS car_owned) 
    CASE WHEN FIND_IN_SET(t3.code,t1.homes) > 0 THEN GROUP_CONCAT(DISTINCT(t3.name)) END AS home_owned) 
FROM 
    first_table AS t1 LEFT JOIN second_table AS t2 
    ON t2.code IN (t1.f_name, t1.l_name, t1.a_name) 
    LEFT JOIN second_table AS t3 ON FIND_IN_SET(t3.code,t1.vehicles) > 0 OR FIND_IN_SET(t3.code,t1.homes) > 0 
GROUP BY 
    t1.id, 
    t1.name 

скрипку here

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