繁体   English   中英

mySql子查询答案检查期末考试问题

[英]mySql Subquery Answers Check Final Exam Questions

我对我的这些回答有疑问,如果你们能澄清我是对还是错,将不胜感激,

问题:

一个雇员可能被分配到多个项目,而一个项目可能有许多雇员。 考虑以下关系模式,并为以下查询编写SQL语句。

Employees (empID, empName, empDOB, empAddress, salary, deptID, jobID)

Assignments (empID, projID, assignedDate, completionDate, status)

Projects (projID, projDescription, startDate, endDate, projType)

(a)显示在1980年1月31日之前出生并分配了“办公大楼”类型项目的雇员的姓名,并按姓名的升序对结果进行排序。 (5分)

(b)检索分配了至少两(2)个项目的empID。 (5分)

答案:

(a) SELECT empName FROM Employees WHERE empDOB < '31-01-1980' AND projType = (SELECT projType FROM Projects WHERE projType = 'Office Complex') ORDER BY empName; 

(b) SELECT empID FROM Employees GROUP BY (SELECT projID From Projects) HAVING COUNT(*)>1 ORDER BY empID; 

我觉得第二个问题的答案可能是错误的。

对于a)部分,我将加入表以匹配具有项目类型的员工:

 SELECT empName 
 FROM Employees 
 INNER JOIN Assignments ON Assignments.empID = Employees.empID
 INNER JOIN Projects ON Assignments.projID = Projects.projID
 WHERE empDOB < 31-01-1980 AND projType = 'Office Complex' 
 ORDER BY empName;

就目前而言,您的语句尝试在Employee表中查找不存在的projType ='Office Complex'。

对于第二个问题,您需要的所有内容都在“工作分配”表中:

SELECT empID, COUNT(projID)
FROM Assignments
GROUP BY empID
HAVING COUNT(projID) > 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM