所以基本上这是数据库: 考虑下面给出的COMPANY数据库的关系模式
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
)
我的问题是:
如果你们有时间,可以请用正确的解决方案来表明 哪个部分属于哪个员工,为什么需要他们。我真的很感激。
答案 0 :(得分:0)
我们可以试试。希望这可以帮助。 你的问题是:
2.employee e和d部门,为什么他们都需要?我以为我们只找到员工
不,要求不是寻找员工,而是寻找经理
1.为什么要添加works_on?
如果没有works_on,你怎么知道哪个员工在哪个项目上工作?**
3.最后,最令人困惑的部分是w.essn有计数()> = 2,是否应该将> = 2部分用于项目p?因为我们发现项目编号大于2?*
您是在寻找涉及2名或更多员工的项目,还是在寻找曾参与2个或更多项目的员工?