모든 직원이 일부 프로젝트에서 작업하는 부서 이름을 나열하십시오. 즉, 완전한 질문을하는 직원이 없습니다. 이 문제에 대한 실제 답변을 얻는 데 어려움을 겪고 있습니다. 교수님은 내가 뭘 잘못하고 있는지 말해 주는데 도움이되지 않습니다. 내가 가진 코드는모든 직원이 일부 프로젝트에서 작업하는 부서 이름을 나열하십시오.
select dname
from division d, employee e, workon w
where e.did = d.did
and w.empid = e.empid
and not exists
(select empid
from workon
group by empid
having count (empid) >= all(select e.empid
from employee ee
where e.did = ee.did
group by ee.empid))
group by dname
표입니다 I이 있습니다
직원
| EMPID | NAME | SALARY | DID |
--------------------------------
| 1 | kevin | 32000 | 2 |
| 2 | joan | 46200 | 1 |
| 3 | brian | 37000 | 3 |
| 4 | larry | 82000 | 5 |
| 5 | harry | 92000 | 4 |
| 6 | peter | 45000 | 2 |
| 7 | peter | 68000 | 3 |
| 8 | smith | 39000 | 4 |
| 9 | chen | 71000 | 1 |
| 10 | kim | 46000 | 5 |
부문
| DID | DNAME | MANAGERID |
----------------------------------------------
| 1 | engineering | 2 |
| 2 | marketing | 1 |
| 3 | human resource | 3 |
| 4 | Research and development | 5 |
| 5 | accounting | 4 |
Workon
| PID | EMPID | HOURS |
-----------------------
| 3 | 1 | 30 |
| 2 | 3 | 40 |
| 5 | 4 | 30 |
| 6 | 6 | 60 |
| 4 | 3 | 70 |
| 2 | 4 | 45 |
| 5 | 3 | 90 |
| 3 | 3 | 100 |
| 6 | 8 | 30 |
| 4 | 4 | 30 |
| 5 | 8 | 30 |
| 6 | 7 | 30 |
| 6 | 9 | 40 |
| 5 | 9 | 50 |
| 4 | 6 | 45 |
| 2 | 7 | 30 |
| 2 | 8 | 30 |
| 2 | 9 | 30 |
| 1 | 9 | 30 |
| 1 | 8 | 30 |
| 1 | 7 | 30 |
| 1 | 5 | 30 |
| 1 | 6 | 30 |
| 2 | 6 | 30 |
) '하지만 내 교수는 말한다 e.did 에 (e.did는 = ee.did가와 이 (workon의 w에서 w.empid 선택)하지 ee.empid 의 경우 직원 EE 에서 e.did 를 선택) 내 대답의 상관 관계가 잘못되었습니다 – user1824931
그는 맞습니다; 당신의 대답은 틀립니다. ee.empid가 아니라고 (workon w에서 w.empid를 선택하십시오) 말할 때, 당신은 아무것도하지 않고 일하는 사람들을 찾고 있다고 말하는 것입니다. 그러나, 그것은 당신에게 무언가에 종사하고있는 사람들을 얻지는 못하지만, 현재 당신이 고려하고있는 부서에서는 그렇지 않습니다. 테이블 ee의 부서를이 필터링 부속 조회에 연결해야합니다. – Lluluien