【发布时间】:2016-01-03 19:21:12
【问题描述】:
我对我的这些答案有些疑问,如果你们能澄清我的正确或错误,将不胜感激,
问题:
一名员工可能被分配到多个项目,而一个项目可能有许多员工。考虑以下关系模式并为以下查询编写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;
我觉得第二个问题的答案可能是错误的。
【问题讨论】:
-
关于 b):仔细查看“作业”表。这个存储有价值的数据,可以帮助您。
-
我正在试图弄清楚,也是在答案 (a) 中,这不是错误的,因为我从员工那里获取并将 WHERE 子句与项目类型的项目表相关联吗?
-
使用 sql-server 标签标记 MySQL 问题会降低您的考试成绩 5 分:-)
-
您应该熟悉
JOIN操作。您应该首先JOIN需要从中获取数据的表,然后指定您的选择。 -
你遇到了麻烦!另一个建议:考虑将
JOIN运算符与ON结合使用。这使您的查询更具可读性并且很常用。
标签: mysql sql sql-server database