2013-05-20 2 views
1

У меня есть два запроса mysql и вы хотите объединить их в один.Соедините два запроса sql в одном

Этот раздел в основном «объединяет» два столбца в один.

SELECT description 

CASE 
    WHEN checkbox2 = '2' THEN '2' 
    WHEN checkbox2 = '1' THEN '1' 
    WHEN checkbox2 = '0' THEN '0' 
    WHEN checkbox1 = '1' THEN '1' 
    WHEN checkbox1 = '0' THEN '0' END 'checkbox_merge', 

FROM table2 
LEFT JOIN table3 
    ON table2.id2 = table3.id2 
ORDER BY table2.id2 

Это один занимает две таблицы и вращает имена (A-> D) и использует их в качестве столбцов, чтобы нарисовать сетку, если вы будете.

SELECT description 

    MAX(CASE WHEN column1 = 'A' THEN checkbox1 ELSE '-' END) 'A', 
    MAX(CASE WHEN column1 = 'B' THEN checkbox1 ELSE '-' END) 'B', 
    MAX(CASE WHEN column1 = 'C' THEN checkbox1 ELSE '-' END) 'C', 
    MAX(CASE WHEN column1 = 'D' THEN checkbox1 ELSE '-' END) 'D', 

FROM table1 
JOIN table2 
    ON table2.id = table1.id 
WHERE table2.id = var1 and table1.id = var1 
GROUP BY description 

Так что я хотел бы сделать первый запрос и использовать checkbox_merge вместо checkbox1 во втором запросе.

Любые идеи, как это осуществить?

ответ

2

Попробуйте это:

SELECT 
    description, 
    MAX(
    CASE 
     WHEN column1 = 'A' 
     THEN (
      CASE 
       WHEN checkbox2 = '2' THEN '2' 
       WHEN checkbox2 = '1' THEN '1' 
       WHEN checkbox2 = '0' THEN '0' 
       WHEN checkbox1 = '1' THEN '1' 
       WHEN checkbox1 = '0' THEN '0' 
      END 
     ) 
    ELSE '-' 
    END 
) 'A' 

FROM 
    table1 
JOIN table2 
    ON table2.id = table1.id 
LEFT JOIN table3 
    ON table2.id2 = table3.id2 
WHERE 
    table1.id = var1 
GROUP BY description 
+0

'checkbox2' от Table3 ... –

+0

жаль, что я буду обновлять мой запрос – Stephan

+0

сделано, пожалуйста попробуйте сейчас – Stephan

2

Отказ от ответственности: Это будет работать на SQL Server, не уверен в MySQL. Просто гнездо первый запрос в секунду, подобно этому макету:

SELECT description 

    MAX(CASE WHEN t2.column1 = 'A' THEN t1.checkbox_merge ELSE '-' END) 'A', 
    MAX(CASE WHEN t2.column1 = 'B' THEN t1.checkbox_merge ELSE '-' END) 'B', 
    MAX(CASE WHEN t2.column1 = 'C' THEN t1.checkbox_merge ELSE '-' END) 'C', 
    MAX(CASE WHEN t2.column1 = 'D' THEN t1.checkbox_merge ELSE '-' END) 'D', 

FROM (
    SELECT 
     CASE 
      WHEN checkbox2 = '2' THEN '2' 
      WHEN checkbox2 = '1' THEN '1' 
      WHEN checkbox2 = '0' THEN '0' 
      WHEN checkbox1 = '1' THEN '1' 
      WHEN checkbox1 = '0' THEN '0' 
     END as [checkbox_merge], 
     table2.id2 as [id] 
    FROM table2 
    LEFT JOIN table3 
     ON table2.id2 = table3.id2 
    ORDER BY table2.id2) 
as t1 
JOIN table2 t2 
    ON t1.id = t2.id 
WHERE t2.id = var1 and t1.id = var1 
GROUP BY t2.description 
+0

Это работает с небольшими изменениями в mysql. Спасибо! –

+0

добро пожаловать. Не забывайте отмечать как решение для других пользователей. Также опубликуйте свои изменения, так что пример завершен. – Jim

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