0
이 글을 쓰는 방법을 알아낼 수 없습니다. 저는 4 개의 테이블을 가지고 있습니다 : 수상자 목록, 배우, 프로듀서 및 TV 쇼에 실제로 주어지는 상입니다. 후자 그룹은 복합 키로 식별 할 수 있습니다. 나는 포기하지 않은 상을 모두 나열하고 싶습니다. 지금까지 내가 한 일이 여기있다.SQL에서 복합 키를 비교하는 중
- 상 PK {award_name, award_type, award_year}
- actoraward 약동학 {award_name, award_type, award_year} FK {award_name, award_type, award_year}
- prodaward 약동학 {award_name, award_type, award_year FK} {award_name, award_type, award_year }
- showaward 약동학 {award_name, award_type, FK award_year} {award_name, award_type, award_year }
SELECT AWARD.AWARD_NAME, AWARD.AWARD_TYPE, AWARD.AWARD_YEAR
FROM AWARD
WHERE NOT EXISTS
(
SELECT *
FROM AWARD AW, ACTORAWARD ACAW
WHERE (AW.AWARD_NAME = ACAW.AWARD_NAME AND AW.AWARD_TYPE = ACAW.AWARD_TYPE AND AW.AWARD_YEAR = ACAW.AWARD_YEAR)
)
AND NOT EXISTS
(
SELECT *
FROM AWARD AW, PRODAWARD PRAW
WHERE (AW.AWARD_NAME = PRAW.AWARD_NAME AND AW.AWARD_TYPE = PRAW.AWARD_TYPE AND AW.AWARD_YEAR = PRAW.AWARD_YEAR)
)
AND NOT EXISTS
(
SELECT *
FROM AWARD AW, SHOWAWARD SHAW
WHERE (AW.AWARD_NAME = SHAW.AWARD_NAME AND AW.AWARD_TYPE = SHAW.AWARD_TYPE AND AW.AWARD_YEAR = SHAW.AWARD_YEAR)
)
구문이 좋기 때문에 걱정하지 않아도 존재하지 않으며 작동하지 않으며 세 가지 값을 동시에 IN
을 사용하여 비교할 수 없으므로이 문제를 해결하려면 어떻게해야합니까?
관련이 없지만 : WHERE 절에서 고대, 구식 및 연약한 암시 적 조인을 사용하지 말아야합니다. 명시 적으로 'JOIN'연산자를 사용하여 시작합니다 (비록 내가 말했듯이, 이러한 조인은 필요하지 않습니다) –