2013-11-03 32 views
-1

請問我該如何檢查此SQL問題的類似結果組。INTERSECT表與多個返回值

=========== 
EMPLOYEE 
=========== 
ID | Name | 
=========== 
1 | EMP1 | 
2 | EMP2 | 

================== 
HASSKILL 
================== 
EMPID | SkillID | 
    1 | 001  | 
    1 | 002  | 
    1 | 003  | 
    2 | 003  | 
    2 | 004  | 
    2 | 005  | 

JOB 
=================== 
JobID | NEEDSKILL | 
=================== 
    1 | 002  | 
    1 | 003  | 

我可以得到由作業使用以下命令所需的技能:

SELECT NEEDSKILL FROM JOB WHERE JobID = 1; 

我如何通過一個具有所需的作業1沒有PL技能的員工,顯示員工的「環」/SQL?

回答

2
select empid from HASSKILL, JOB 
where jobid = 1 and skillid = needskill 
group by empid 
having count(0) = (select count(0) from JOB where jobid = 1) 
+0

你好,謝謝你的回覆,你能解釋一下你的代碼,因爲我真的不明白它。謝謝。 – curiosity

+0

它計算每個員工的技能數量,並檢查此數量是否等於所需技能的數量。 –

+0

如果還有另一個具有相同數字技能但具有不同技能ID的工作,這不會是錯誤的嗎? – curiosity