셋 이상의 테이블 조인
각 조인 사양은 두 개의 테이블만 조인하지만 FROM 절은 여러 개의 조인 사양을 포함할 수 있습니다. 이렇게 하면 하나의 쿼리에 대해 여러 테이블을 조인할 수 있습니다.
AdventureWorks2008R2 데이터베이스의 ProductVendor 테이블은 둘 이상의 테이블을 조인하는 것이 유리한 상황에 대한 좋은 예를 보여 줍니다. 다음 Transact-SQL 쿼리는 특정 하위 범주의 모든 제품 이름과 해당 공급업체 이름을 찾습니다.
SELECT p.Name, v.Name
FROM Production.Product p
JOIN Purchasing.ProductVendor pv
ON p.ProductID = pv.ProductID
JOIN Purchasing.Vendor v
ON pv.BusinessEntityID = v.BusinessEntityID
WHERE ProductSubcategoryID = 15
ORDER BY v.Name;
결과 집합은 다음과 같습니다.
Name Name
--------------------------------------------------------
LL Mountain Seat/Saddle Chicago City Saddles
ML Mountain Seat/Saddle Chicago City Saddles
HL Mountain Seat/Saddle Chicago City Saddles
LL Road Seat/Saddle Chicago City Saddles
ML Road Seat/Saddle Chicago City Saddles
HL Road Seat/Saddle Chicago City Saddles
LL Touring Seat/Saddle Chicago City Saddles
ML Touring Seat/Saddle Chicago City Saddles
HL Touring Seat/Saddle Chicago City Saddles
HL Touring Seat/Saddle Expert Bike Co
ML Touring Seat/Saddle Expert Bike Co
LL Touring Seat/Saddle Expert Bike Co
HL Road Seat/Saddle First Rate Bicycles
LL Mountain Seat/Saddle First Rate Bicycles
ML Mountain Seat/Saddle First Rate Bicycles
LL Road Seat/Saddle Hill's Bicycle Service
ML Road Seat/Saddle Hill's Bicycle Service
HL Mountain Seat/Saddle Hybrid Bicycle Center
(18 row(s) affected)
FROM 절에 지정된 테이블 중 하나인 ProductVendor의 열은 결과에 나타나지 않습니다. 또한 조인된 열인 ProductID 및 VendorID도 결과에 나타나지 않습니다. 하지만 ProductVendor를 중간 테이블로 사용하면 이러한 조인이 가능합니다.
ProductVendor는 조인에 포함된 다른 테이블의 중간 연결점이 되므로 조인의 중간 테이블인 ProductVendor 테이블을 변환 테이블이라고도 합니다.
둘 이상의 테이블을 조인하거나 둘 이상의 열 쌍을 조인하기 위해 동일한 문에 조인 연산자가 여러 개 있을 경우 조인 식을 AND 또는 OR로 연결할 수 있습니다.