我需要编写一个查询,生成符合某些实验和参与标准的participantID
列表。 我有这些表格:
participantID
,participationDate
和experimentID
。experimentID
,keyword
。participantID
和一堆不相关的字段。我的条件是:
Keyword<>"Robots"
AND ParticipationDate<#12/1/2014#
AND Experiment.ExperimentID=Participation.ExperimentID
以下是我编写的代码,该代码适用于在参与表中查找参与者,即参加过实验:
SELECT ParticipantID, Keyword
FROM Experiment, ExperimentParticipation
WHERE Experiment.ExperimentID = ExperimentParticipation.ExperimentID
AND Keyword<>"Robots"
AND ParticipationDate <#12/1/2014#
因此,ParticipantRegistry
表格包含participantID
的完整列表(即使参与表中未包含的参与者,也从未参加过实验)。
我想创建一个查询,其参与者符合我的标准,我可以与参与实验的人和ParticipantRegistry
表中没有参与任何实验的人一起实现。问题是没有参加的参与者不在Participation
表中,所以我不能使用null函数。
答案 0 :(得分:1)
也许您正在寻找left join。
您可以从ParticipantRegistry
完全选择参与者(左连接会保留它们,即使其中一些没有实验加入),并加入Participation
。然后最后加入Experiment
。
更新:
SELECT ParticipantRegistry.ParticipantID, Keyword
FROM (ParticipantRegistry
LEFT JOIN Participation ON (ParticipantRegistry.ParticipantID = Participation.ParticipantID AND ParticipationDate <#12/1/2014#))
LEFT JOIN Experiment ON (Participation.ExperimentID = Experiment.ExperimentID AND Keyword<>"Robots")