所以基本上是这样的数据库: 考虑下面SQL查询解决方案混乱,由一群迷茫的和having子句
EMPLOYEE (fmane, minit, lname, ssn, birthdate, address, sex, salary, superssn, dno) KEY: ssn
DEPARTMENT (dname, dnumber, mgrssn, mgrstartdate) KEY: dnumber.
PROJECT (pname, pnumber, plocation, dnum) KEY: pnumber.
WORKS_ON (essn, pno, hours) KEY: (essn, pno)
DEPENDENT (essn, dependent-name, sex, bdate, relationship) KEY: (essn, dependent-name)
给予公司数据库的关系模式,问题是:
给在克利夫兰工作的两个或多个项目的经理的姓氏和SSN。
校正解决方案是这样的:
select Lname
from Employee e, Department d
where (e.ssn = d.mgrssn)
and ssn in (
select w.essn
from works_on w, Project p
where w.pno = p.pnumber
and p.plocation = 'Cleveland'
group by w.essn
having count(*) >= 2
)
我的问题是:
- 为什么加入works_on?
- 员工e和部门d,他们为什么都需要?我认为我们最终才找到员工
- ,最令人困惑的部分是由w.essn组成的计数(*)> = 2, 应该> = 2部分用于项目p而不是?因为我们发现 大于2的项目编号?
如果你们有时间,你能否请正确的解决方案标志显示 哪部分属于哪个员工,他们为什么需要。对此,我真的非常感激。
对不起太宽泛,我们将不得不教你一个db的课程来涵盖所有这些要点。你应该问问你的老师。请阅读[**如何询问**](http://stackoverflow.com/help/how-to-ask) –