需要MYSQL帮助高中

时间:2017-02-16 16:33:29

标签: mysql

你能帮我解决这个问题吗?

“在产品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 - ”。

1 个答案:

答案 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