我正在为我的数据库考试学习,其中涵盖了许多我需要手写的SQL语句。下面是我的书中概述的两种情景的架构图和解决方案,这些方案对我来说似乎没有意义。你可以向我解释这2个SQL查询吗?
Q13:检索所有员工的部门5谁每周工作超过10小时的项目了ProductX的名字。
SELECT FNAME, LNAME
FROM EMPLOYEE,PROJECT, WORKS_ON
WHERE DNO = 5 AND PNAME = ‘PRODUCT X’ AND HOURS>10 AND ESSN=SSN;
不应该WHERE子句包括PNO = NUMBER?如何知道WORKS_ON表参考PROJECT表中没有包括这个?是因为我们引用了ESSN = SSN?
Q1:检索具有相同名字且与雇员性别相同的受抚养人的每名雇员的姓名。
SELECT E.FNAME, E.LNAME
FROM EMPLOYEE AS E
WHERE E.SSN IN (SELECT D.ESSN FROM DEPENDENT AS D WHERE E.FNAME = D.DEPENDENT_NAME AND D.SEX = E.SEX);
我明白此查询一路上扬,直至WHERE子句。我不明白什么E.SSN IN正在尝试处理它之前的子查询。如果有人能解释这一点,那会很好。
切勿使用逗号连接语法。并参见相关与非相关的子查询。 – Strawberry
你使用的是MySQL还是MS SQL Server? (不要标记不涉及的产品。) – jarlh