我知道隐式 JOINS 已经过时,但它是用于家庭作业的。他所有的隐式连接示例只连接 2 个表,我在任何地方都找不到连接 3 个的示例。
SELECT Name
FROM Employee
JOIN EmployeeSkills
ON (EmployeeID=E.ID)
JOIN Skill ON (SkillID=S.ID)
WHERE Title=’DBA’;
这是我想要的明确版本。我将如何隐含地写这个?
谢谢
我是这样写的:
SELECT E.Name FROM Employee E,EmployeeSkills ES,Skill S
WHERE E.ID = ES.EmployeeID
AND ES.SkillID = S.ID
AND S.Title=’DBA’;
与您收到的第一个答案几乎相同,但为了清楚起见,一旦我开始使用别名,我将始终使用它们,并确保您定义它们。在上面的示例中,员工和技能都可以有一个名称,而职称可以是员工的头衔或技能的名称。即使您不熟悉架构,使用表名(或别名)也可以轻松查看正在发生的事情。
此外,可能是我多年前使用的数据库,但如果您没有按照引入表的顺序编写连接,它会影响性能(非常轻微,但在大数据上差异很大)。
它与两个表示例几乎相同:
SELECT a.Name
FROM Employee a,EmployeeSkills b ,Skill c
WHERE a.EmployeeID = b.ID
AND b.SkillID = c.ID
AND Title=’DBA’;
编辑:Everett Warren 对别名提出的好观点,最佳实践是不使用隐式连接,因为它们很久以前就被弃用了。