SQL - 多子表的条件

时间:2018-04-09 13:02:00

标签: sql sql-server

我有10个表,其中1个是父级,其他9个是并行子级。

所有这9个表都有一个名为Version的列,其值为0&以上。零是草案。

我尝试使用JOINS但是加入了我对版本列的模糊性。

有什么方法可以说这9个子表中的任何一个都有任何草稿

必需的输出是父表列+ HasDrafts(来自子表)。

有没有办法实现这个目标?如果是,请指导我。

2 个答案:

答案 0 :(得分:1)

如果您不关心哪个表格包含草稿或有多少草稿,那么您可以在exists表达式中使用case

select p.*,
       (case when exists (select 1 from child1 c where c.parentid = p.parentid and 1.version = 0) or
                  exists (select 1 from child2 c where c.parentid = p.parentid and c.version = 0) or
                  exists (select 1 from child3 c where c.parentid = p.parentid and c.version = 0) or
                  . . .
            then 1 else 0
        end) as has_drafts                  
from parent p;

答案 1 :(得分:1)

我会建立一个联合并为其表格设置一个额外的列。它是Ex。

选择ID,版本,' tableA'来自TableA
工会
选择ID,版本,' tableB'来自TableB

这是我的肮脏解决方案。