2013-05-20 78 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'從表3 ... –

+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