예상대로 외부 조인을 사용하여 쿼리를 처리하는 데 문제가 있습니다.LEFT JOIN on Oracle
데이터는 다음과 같습니다
TABLE a:
id
1
2
3
TABLE b:
id aid
11 1
12 2
TABLE c:
id bid
21 11
22 12
쿼리는 다음과 같습니다
a.id b.id b.aid c.id c.bid
1 11 1 21 11
2 12 2 22 12
3 null null null null
:
SELECT *
FROM
a
LEFT JOIN
b
ON a.id = b.aid
INNER JOIN c
ON b.id = c.bid
내가 모든 a
및 가능한 얻을 필요가이 같은 b
및 c
, INNER JOIN
은 단지의 연장입니다. 이전 LEFT JOIN
과 일치하는 경우입니다. 대신
, 내가 얻을 : 내가 할 두 번째 INNER JOIN
없이
a.id b.id b.aid c.id c.bid
1 11 1 21 11
2 12 2 22 12
, 예상대로 :
a.id b.id b.aid
1 11 1
2 12 2
3 null null
은의 오라클 및 MS SQL 서버 간의 조인 다른 정의가있는 것 같습니다 . (잘못된 결과)
예상되는 결과를 얻기 위해 쿼리를 작성하는 방법을 알 수 없습니다.
귀하의 쿼리를 다음과 같이 해석됩니다
내부에서 어떤 차이가 나는 것입니다 SQL 서버와 오라클 – edc65
사이에 가입 왼쪽 :
당신은 B 사이에 조인 외부 조인을 사용해야와 C뿐만 아니라 SQL Server가 다른 것을 반환하면. –
(두 번째) 내부 조이는 b.id에 null 값을 결합 할 수 없습니다. 따라서 expection이 올바르지 않은 것처럼 보입니다. oracle과 ms sql은 같은 방식으로 작동합니다 .for join – scaisEdge