我是SQL新手。我正在阅读Elmasri的数据库系统基础。 我正在研究一个非常简单的select-project-join。这是本书中的一个例子。 查询说明:
对于位于'Stafford'的每个项目,列出项目编号, 控制部门编号和部门经理的姓氏, 地址和出生日期。
SELECT Pnumber, Dnum, Lname, Address, Bdate
FROM PROJECT, DEPARTMENT, EMPLOYEE
WHERE Dnum=Dnumber AND Mgr_ssn=Ssn AND
Plocation=‘Stafford’;
附加了关系数据库架构。
以下是我的问题:是否必须Dnum=Dnumber AND Mgr_ssn=ssn
?为什么不Dnum=Dnumber AND Dno=Dnumber
?
答案 0 :(得分:2)
如果您使用Dno = Dnumber
,您将获得所有部门中的员工,而不仅仅是部门经理。
答案 1 :(得分:0)
对于你的问题,因为描述说明了
...列出部门经理的姓氏,地址和出生日期
因此,使用Mgr_ssn=Ssn
加入足够的条件。由于表格设计,它隐含了必要条件 Dno=Dnumber
,因此您可能(或可能不)需要将其添加到您的查询中。
另外,您的图书有点陈旧,您应该考虑阅读一些外部链接,例如avoiding using old style join和using table alias