2017-02-19 1 views
0

JOINs을 사용하지 않고 LEFT JOIN을 시뮬레이트 할 수 있는지 알고 싶습니다.LEFT JOIN 시뮬레이션을 사용하지 않고 JOIN

나는 this database를 사용하고 내가 현재는 INNER JOIN 얻을 수 있어요이 JOIN

FROM Customers 
LEFT JOIN Orders 
ON Customers.CustomerID=Orders.CustomerID 
ORDER BY Customers.CustomerName; 

SELECT과 시뮬레이션하려고합니다. 이것은 나의 현재 쿼리입니다 :

SELECT Customers.CustomerName, Orders.OrderID 
FROM Customers, Orders 
WHERE Customers.CustomerID=Orders.CustomerID 
ORDER BY CustomerName; 
+1

당신은 당신의 SQL 쿼리가 위의 단지','연산자를 사용하여 가입하세요 아직 실현 않는다 ? – ultrajohn

+0

@ultrajohn 첫 번째 쿼리는 조인을 사용하지 않고 쿼리로 변환하려는 조인입니다. –

+0

두 쿼리 모두 조인이 있습니다. – Strawberry

답변

2

당신은 추가 할 수 있습니다 왼쪽 안티 조인 쿼리를 말한다 :

SELECT Customers.CustomerName, Orders.OrderID 
FROM Customers, Orders 
WHERE Customers.CustomerID=Orders.CustomerID 
ORDER BY CustomerName 

UNION 

SELECT Customers.CustomerName, NULL FROM Customers 
    WHERE Customers.CustomerID NOT IN (SELECT CustomerID FROM Orders); 
+0

SQL에서는 UNION ALL이 정확한 동등성을 얻는 것이 더 좋습니다. 또한 솔루션이 LEFT JOIN의 관계형 대수의 정의와 정확히 일치한다는 것을 언급 할 가치가 있습니다. https://en.wikipedia.org/wiki/Relational_algebra#Left_outer_join_.28.E2.9F.95.29 –

+0

이 문제에 대해 생각해 보면 , UNION은 UNION ALL과 동일한 출력을 제공합니다. – ultrajohn

+0

@ultrajohn 감사합니다. –