1

2 つの mysql クエリがあり、それらを 1 つに結合したいと考えています。

これは基本的に、2 つの列を 1 つに「マージ」します。

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

これは 2 つのテーブルを取り、名前をピボット (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したがって、最初のクエリを取得し、2 番目のクエリの代わりに inを使用したいと思いcheckbox1ます。

これを達成する方法はありますか?

4

2 に答える 2

2

免責事項: これは SQL Server で動作しますが、MySQL については不明です。このモックアップのように、最初のクエリを 2 番目のクエリにネストするだけです。

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
于 2013-05-20T08:25:06.353 に答える
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
于 2013-05-20T08:16:31.460 に答える