Sql 具有多个返回值的相交表
我想问一下,对于这个SQL问题,如何检查类似的结果组Sql 具有多个返回值的相交表,sql,oracle,Sql,Oracle,我想问一下,对于这个SQL问题,如何检查类似的结果组 =========== EMPLOYEE =========== ID | Name | =========== 1 | EMP1 | 2 | EMP2 | ================== HASSKILL ================== EMPID | SkillID | 1 | 001 | 1 | 002 | 1 | 003 | 2 | 003 |
===========
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?您好,谢谢您的回复,您能为我解释一下您的代码吗,因为我无法真正理解它。谢谢。它计算每个员工的技能数量,并检查此数量是否等于所需的技能数量。如果有另一个工作具有相同数量的所需技能,但具有不同的技能id,这难道不是错误的吗?我们只计算jobid=1所需技能中的技能。拥有两个聚合似乎是一种非常低效的方法信息技术此外,您实际显示的不是员工,而是他的ID。
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)