C# 응용 프로그램을 작성 중이며 Access .mdb를 사용하고 있습니다. 전자 메일 메시지가있는 테이블과 메시지 관계가있는 테이블이 있습니다 (각 전자 메일 메시지는 여러 팀의 작업자에게 할당 될 수 있습니다).SQL : 다른 테이블에 관계가없는 데이터를 선택하십시오.
첫 번째 테이블에서 어떤 팀에도 할당되지 않은 메시지를 가져 오려고합니다. 즉, 두 번째 테이블에 항목이 없거나 빈 항목이 있습니다. 그것은 빈 항목을 사용하여 잘 작동하지만 그 할당 항목이 전혀없는 행은 반환하지 않습니다.
나는 다음과 같은 쿼리를 사용하고 있습니다 :
SELECT TOP 10 Mails.*
FROM Mails INNER JOIN MailAssignments ON Mails.msgId = MailAssignments.msgId
WHERE (Mails.msgId <= ?)
AND
(Mails.msgId NOT IN (SELECT msgId FROM MailAssignments))
OR (MailAssignments.forTeam IS NULL)
OR (MailAssignments.forTeam = '')
업데이트 :이 때문에 일부 조건에 쿼리는 행이의 관계를 가진 반환해야 가입의 어떤 종류를 사용할 필요가
다른 테이블 (예 : 팀원의 메시지 및 할당되지 않은 메시지를 표시하려는 경우).
는 UPDATE :
OK, 나는 빈 할당, 존재하지 않는 유일한 사람을 확인할 필요가 없도록 내가 두 번째 테이블에서 모든 할당을 삭제하여 더 간단 그것을 만들 수 있습니다 추측 조금도. 하지만 할당되지 않은 데이터와 함께 할당 된 데이터를 때때로 표시해야하는 경우도 있습니다. 그리고 난 단지 다른 매개 변수를 가질 것있는 하나 개의 쿼리를 작성하도록 변경해야합니다/
UPDATE/솔루션 :
내가 좀 더 조정을했지만 왼쪽은 기본적으로 나를 위해 속임수를 썼는지에 가입하세요! 그 힌트와 모든 도움에 감사드립니다, 얘들 아!
업데이트 : 당신은 정말 메일에 대한 자신의 팀에서 메시지를 가질 수 없습니다 팀에 배정되지 않은 것입니까? –
근로자가 기본적으로 팀의 메시지를 보길 원하지만 다른보기를 활성화하면 할당되지 않은 메시지도 볼 수 있습니다 (예 : 팀에 할당 할 수 있음) – Val
좀 더 조정했지만 LEFT JOIN은 기본적으로 나를 위해 속임수! 도와 줘서 고마워! – Val