2 개의 테이블이 있습니다. 하나는 프로젝트 목록을 포함하고 다른 하나는 해당 프로젝트의 작업 목록을 포함합니다.관련된 모든 레코드가 문자열과 동일한 모든 레코드 검색
모든 작업의 상태가 "완료"인 프로젝트 목록 만 가져 오려고합니다.
프로젝트 테이블 : :
내 데이터는 다음과 같습니다
ID,ProjectName,ProjectStatus
작업 테이블 : 나는 모든 기록을 얻을 수있는 기본적인 SELECT 문을 수행 할 수
ID, ProjectID, TaskName, TaskStatus
Tasks.ProjectID = Projects.ID
TaskStatus가 특정 상태이지만 다시 필터링 할 수 있습니다. , 나는 모든 작업이 완료된 프로젝트 목록 만 원합니다.
미리 도움을 청하십시오!
select *
from Projects
where ID NOT IN (select ProjectID from Tasks where TaskStatus = 'COMPLETE')
하나 또는 사용 여부 :
select *
from Projects P
where NOT EXISTS (select 1 from Tasks where Tasks.ProjectID = P.ID and TaskStatus <> 'COMPLETE')
편집이
이당신은 또한 NOT 하위 쿼리에서 사용할 수있는 완료 :
을 지금 바로 확인 : 모든 관련 작업 당신은 그것의 0 개 이상의 작업을 모두 의미하는 기존의 방식으로 용어를 사용하고, 완료 말할 때 완료, 또는 어떤 경우에는 프로젝트에 최소한 하나의 작업이 필요합니까? 일반적으로 연관된 작업이없는 프로젝트는 원하는 것이지만 일부 사람들은 재미 있고 비 고전적인 논리 방식으로 "모두"를 사용합니다. –
설명해 주셔서 감사합니다. 나는 모든 것을 의미했다. 프로젝트를 만들 때 초기 작업을 만들 수 있도록 응용 프로그램을 만들었습니다. –