我有一个涉及一对多关系的SQL问题。
我的数据库中有一个名为清单的表格。每个清单记录可以在表格中为 ChecklistMaterial 包含多个匹配项。 ChecklistMaterial 表中有一个字段,用于指示是否在指定已发货或未发货的特定字段中使用1或0来发货。
在核对表级别,我想指出(在一个SQL语句中,其他核对表字段)是否已经发送了该核对表的所有材料。基本上,如果该清单的所有材料记录已经发货,它将在清单级别显示1。
这是我想要做的简单版本。如果这听起来完全偏离基础或采取合理合理的方法,请告诉我。
提前致谢!
答案 0 :(得分:0)
喜欢这个吗?
select
checklist.abc,
checklist.def,
(select sign(sum(shipped))
from checklistmaterials
where checklist.checklistid = checklistmaterials.checklistid
from
checklist
答案 1 :(得分:0)
如果您确定ChecklistMaterial
只有0
或1
,则此列的最小值将计算所有记录是否为1。
SELECT * ,
(SELECT Min(checked)
FROM ChecklistMaterial
WHERE <JOIN between Checklist and ChecklistMaterial>
)
FROM Checklist
顺便说一句。使用Max
代替Min
会检查至少有一条记录是否有1
。