我理解隐式JOINS已经过时,但这是作业作业。他所有的隐式连接示例只能连接2个表,而且我找不到任何连接3的示例。
SELECT Name
FROM Employee
JOIN EmployeeSkills
ON (EmployeeID=E.ID)
JOIN Skill ON (SkillID=S.ID)
WHERE Title=’DBA’;
这是我想要的显式版本。我怎么会隐含地写这个?
由于
答案 0 :(得分:1)
它与两个表格示例几乎相同:
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对别名提出的好处,最佳做法是不使用隐式连接,因为它们很久以前就被弃用了。
答案 1 :(得分:1)
以下是我写的方式:
SELECT E.Name FROM Employee E,EmployeeSkills ES,Skill S
WHERE E.ID = ES.EmployeeID
AND ES.SkillID = S.ID
AND S.Title=’DBA’;
与你收到的第一个答案几乎相同,但是,为了清楚起见,一旦我开始使用别名,我会在整个过程中使用它们,并确保你定义它们。在上面的示例中,员工和技能都可以具有名称,而标题可以是员工的职位或技能的名称。使用表名(或别名)可以轻松查看即使您不熟悉架构也会发生什么。
此外,可能是我多年前使用过的数据库,但是如果你没有按照引入表的顺序编写连接,那么它会有性能损失(非常轻微,但对大数据有很大差异)。 / p>