我有10个表,其中1个是父级,其他9个是并行子级。
所有这9个表都有一个名为Version
的列,其值为0&以上。零是草案。
我尝试使用JOINS但是加入了我对版本列的模糊性。
有什么方法可以说这9个子表中的任何一个都有任何草稿
必需的输出是父表列+ HasDrafts(来自子表)。
有没有办法实现这个目标?如果是,请指导我。
答案 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
这是我的肮脏解决方案。