3개 테이블을 INNER JOIN으로 연결하는 다음 쿼리의 빈칸과 실행 원리를 올바르게 분
3개 테이블을 INNER JOIN으로 연결하는 다음 쿼리의 빈칸과 실행 원리를 올바르게 분석한 것은?
데이터 상황:
⦁ Orders: OrderID(10308), CustomerID(2), ShipperID(3)
⦁ Customers: CustomerID(1,2,3)
⦁ Shippers: ShipperID(1,2,3)
-- Orders, Customers, Shippers 3개 테이블 연결
SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName
FROM ((Orders
______ ______ Customers ON Orders.CustomerID = Customers.CustomerID)
______ ______ Shippers ON Orders.ShipperID = Shippers.ShipperID);
데이터 상황:
⦁ Orders: OrderID(10308), CustomerID(2), ShipperID(3)
⦁ Customers: CustomerID(1,2,3)
⦁ Shippers: ShipperID(1,2,3)
정답: A
올바른 쿼리는 다음과 같습니다:
SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName
FROM ((Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID)
INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);
3-테이블 INNER JOIN 실행 과정:
1. 첫 번째 조인: Orders와 Customers를 CustomerID로 연결
⦁ Orders.CustomerID(2) = Customers.CustomerID(2) ✓
2. 두 번째 조인: 첫 번째 결과와 Shippers를 ShipperID로 연결
⦁ Orders.ShipperID(3) = Shippers.ShipperID(3) ✓
괄호의 역할:
⦁
((Orders INNER JOIN Customers) INNER JOIN Shippers)
⦁ 첫 번째 JOIN을 먼저 실행하고, 그 결과와 세 번째 테이블을 JOIN
⦁ 실행 순서를 명확하게 지정
INNER JOIN 연쇄의 특징:
⦁ 모든 조건이 만족되는 레코드만 최종 결과에 포함
⦁ 세 테이블 중 하나라도 매칭되지 않으면 해당 레코드는 제외
⦁ OrderID 10308은 CustomerID 2와 ShipperID 3이 모두 존재하므로 결과에 포함
💡 학습 팁
이 문제를 포함한 MySQL 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.