2014-01-23 93 views
0

我有一个涉及一对多关系的SQL问题。SQL查询多个记录中的每个记录中的特定值

我在我的数据库中有一个表,名为检查清单。每个清单记录可以在表格中有多个匹配,ChecklistMaterialChecklistMaterial表具有一个字段,指示是否已装运或未在装运或未装运的特定字段中使用1或0。

清单水平我想指出(在SQL语句是拉动其他清单字段)是否该清单中的所有材料已经运出。基本上,如果所有物料记录已发送,它将在检查清单级别显示1。

这是我想要做的简单版本。让我知道这听起来是完全不在基地或合理和适当的方法。

在此先感谢!

回答

0

是否这样?

select 
    checklist.abc, 
    checklist.def, 
    (select sign(sum(shipped)) 
     from checklistmaterials 
     where checklist.checklistid = checklistmaterials.checklistid 
from 
    checklist 
0

如果您确定ChecklistMaterial只有01中,最小过该列将计算,如果所有的记录有1

SELECT * , 
     (SELECT Min(checked) 
     FROM ChecklistMaterial 
     WHERE <JOIN between Checklist and ChecklistMaterial> 
    ) 
    FROM Checklist 

BTW。使用Max而不是Min将检查至少一条记录是否有1

+0

对不起,它实际上可以是1或2,具体取决于装运类型。 (它连接到MS Access中的选项框)。那么如果只有一种材料是0,Min(ChecklistMaterial)总是等于0? – mntyguy

+0

@ user3177831'Min(ChecklistMaterial)'是满足连接条件的所有记录中找到的最小值,即如果列中有1和2,那么如果至少有一个1,则为1,如果WHERE选择的记录中只有2,则为2。 – FrankPl

+0

哦,是的,现在确实有道理..嗯。我可能会被卡住。 – mntyguy