SQL Implicit Join连接3个表

时间:2013-06-18 02:32:58

标签: sql join implicit

我理解隐式JOINS已经过时,但这是作业作业。他所有的隐式连接示例只能连接2个表,而且我找不到任何连接3的示例。

SELECT Name 
FROM Employee 
JOIN EmployeeSkills 
ON (EmployeeID=E.ID) 
JOIN Skill ON (SkillID=S.ID)
WHERE Title=’DBA’;

这是我想要的显式版本。我怎么会隐含地写这个?

由于

2 个答案:

答案 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>