MS Access中的SQL查询,用于搜索符合特定条件的参与者列表

时间:2014-12-01 04:33:01

标签: sql ms-access

我需要编写一个查询,生成符合某些实验和参与标准的participantID列表。 我有这些表格:

  • 参与,其中包含participantIDparticipationDateexperimentID
  • 实验 experimentIDkeyword
  • ParticipantRegistry ,其中包含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函数。

1 个答案:

答案 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")