你能帮我解决这个问题吗?
“在产品x上每周工作超过10小时的第5部门员工的主管姓氏。”
代码:
SELECT LNAME FROM EMPLOYEE e , WORKS_ON w, PROJECT p
WHERE e.DNO=5 AND e.SUPER_SSN=w.ESSN AND w.PNO=PNUMBER AND p.PNAME='ProductX' AND HOURS>10;
与之类似:
“在产品x上每周工作超过10小时的部门5员工的姓氏。”
使用正在运行的代码:
SELECT LNAME FROM EMPLOYEE e , WORKS_ON w, PROJECT p
WHERE e.DNO=5 AND e.SSN=w.ESSN AND w.PNO=PNUMBER AND p.PNAME='ProductX' AND HOURS>10;
但我似乎无法得到第一个工作,这给了我“-empty set - ”。
答案 0 :(得分:0)
如果您已经获得了一个已接受的查询,该查询会为您提供"部门5中员工姓氏超过10小时/周的产品x"而你所要做的就是找到他们的主管,然后你可以简单地选择这些员工的SUPER_SSN
而不是他们的名字,然后找到那些拥有这些SSN的主管。假设主管只是employees
(如果他们在自己的表中,只需在外部查询中替换它),它可能是:
SELECT DISTINCT sup.LNAME FROM employees sup WHERE sup.ssn in
(
SELECT e.SUPER_SSN FROM EMPLOYEE e , WORKS_ON w, PROJECT p
WHERE e.DNO=5 AND e.SSN=w.ESSN AND w.PNO=p.PNUMBER AND p.PNAME='ProductX' AND HOURS>10
)
这个嵌套查询不是最佳的,但很容易理解。要获得真正的解决方案,请根据例如第二次查看加入员工表的可能性。 emp2.ssn=e.super_ssn
。