【发布时间】:2016-08-24 10:47:03
【问题描述】:
我已经使用连接很长时间了,但它一直是旧语法。现在我正在尝试弄清楚如何使用 JOIN 语法进行基本的内部连接,但无法弄清楚。
假设我有 3 张桌子。
员工:
EmployeeID EmployeeName DepartmentID
1 John Smith 2
2 Jane Doe 3
3 Mark Brown 1
部门:
DepartmentID DepartmentName AreaID
1 Sales 2
2 Marketing 1
3 Opeations 3
地区:
AreaID AreaName
1 Marketing
2 Sales
3 Opeartions
我需要获取所有员工姓名及其部门和区域的列表。
使用旧语法,我将运行以下查询:
select e.EmployeeName, d.DepartmentName, a.AreaName
from employees e, departments d, areas a
where e.DepartmentID = d.DepartmentID
and d.AreaID = a.AreaID
使用新语法,我似乎只能将员工与部门联系起来,但不能将部门与同一查询中的区域联系起来。或者我应该使用子选择吗?
【问题讨论】:
-
select ... from t1 join t2 on t1.c = t2.c join t3 on t2.c = t3.c
-
主要区别在于“事物的顺序” - 使用旧的 Oracle 专有语法,您可以一次性枚举所有连接的表,然后将所有连接条件放在 @ 987654325@ 子句。使用 SQL 标准语法,您命名要连接的前两个表,然后立即添加连接条件 (
on ...)。然后你说join third_table和连接条件,显示第三个表如何连接到前两个表的现有连接。等等。