【发布时间】:2016-02-27 20:13:51
【问题描述】:
EMPLOYEE(fname、minit、lname、ssn、生日、地址、性别、薪水、superssn、dno)
关键:ssn
部门(dname、dnumber、mgrssn、mgrstartdate)
键:dnumber。
项目(pname、pnumber、位置、dnum)
键:pnumber。
WORKS_ON(essn、pno、小时)
KEY: (essn, pno)
DEPENDENT(essn、从属姓名、性别、日期、关系)
KEY:(essn,从属名称)
我想查找从事 3 个或更多项目、使用 group by 并在相关子查询中的员工的姓氏。
我之前在找经理时也遇到过类似的问题,但现在我想找员工,我试图转换代码,这是我所拥有的:
我应该改变什么?
SELECT Lname
FROM Employee e,
Department d
WHERE (e.ssn = d.mgrssn)
AND e.ssn IN (SELECT w.essn
FROM works_on w,
Project p
WHERE w.pno = p.pnumber
GROUP BY
w.essn
HAVING COUNT(*) >= 2)
【问题讨论】:
-
这适用于哪个 RDBMS?请添加标签以指定您使用的是
mysql、postgresql、sql-server、oracle还是db2- 或其他完全不同的东西。 -
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI
JOIN语法-92 SQL 标准(20 多年前),不鼓励使用它