繁体   English   中英

将两个sql查询合并为一个

[英]Join two sql queries into one

我有两个mysql查询,并希望将它们合并为一个。

这个基本上将两列合并为一列。

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

任何想法如何实现这一目标?

尝试这个:

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

免责声明:这适用于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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM