2014-12-01 2 views
0

특정 실험 및 참여 기준에 맞는 participantID 목록을 생성하는 쿼리를 작성해야합니다. 내가이 테이블이 : participantID, participationDateexperimentID을 가지고
특정 조건에 맞는 참가자 목록을 검색하는 MS Acess의 SQL 쿼리

  • 참여합니다.
  • experimentID, keyword 인 실험.
  • participantID이있는 ParticipantRegistry 및 관련없는 필드가 있습니다.

내 조건은 다음과 같습니다

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의 전체 목록이 있습니다 (참가 테이블에 포함되지 않은 사람도 포함). xperiments).

실험에 참여한 사람들과 실험에 참여하지 않은 ParticipantRegistry 테이블에있는 내 기준에 맞는 참가자가있는 쿼리를 만들고 싶습니다. 문제는 참여하지 않은 참가자가 Participation 테이블에 없기 때문에 null 기능을 사용할 수 없다는 것입니다.

답변

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") 
관련 문제