두 테이블 A
및 B
으로 작업하고 있습니다. 표 A
은 주식 증권을 나타내며 표 B
은 보안에 대한 세부 정보를 포함합니다.전체 외부 조인 순서로 결과 행 수가 달라집니다. 이유가 무엇입니까?
예를 들어, B.Item = 5301
인 경우 행은 특정 보안에 대한 가격을 지정합니다. B.Item = 9999
일 때, 행은 주어진 보안에 대한 배당금을 지정합니다. 나는 같은 행에 가격과 배당금을 모두 얻으려고 노력하고있다. 이것을 달성하기 위해, FULL JOINed
테이블 B
테이블에 두 번 A
두 번입니다.
SELECT *
FROM a a
FULL JOIN (SELECT *
FROM b) b
ON b.code = a.code
AND b.item = 3501
FULL JOIN (SELECT *
FROM b) b2
ON b2.code = a.code
AND b.item = 9999
AND b2.year_ = b.year_
AND b.freq = b2.freq
AND b2.seq = b.seq
WHERE a.code IN (122514)
Year_
, Freq
같은 조인 절의 나머지 필드, 그리고 Seq
단지 가격과 배당금 경기 날짜 확인합니다. A.Code
은 단순히 단일 보안을 식별합니다.
제 문제는 전체 조인 순서를 뒤집을 때 결과 수가 달라진다는 것입니다. 따라서 b.Item = 9999
이 b.Item 2501
앞에 오면 한 가지 결과가 나옵니다. 다른 방법으로 나는 2 개의 결과를 얻습니다. 나는 테이블 B
이 배당금에 대한 보안 122514
에 대한 엔트리가 없다는 것을 깨달았지만, 가격에 대해서는 두 개의 엔트리가 있습니다.
먼저 가격을 지정하면 가격과 배당 필드가 모두 null
이됩니다. 그러나 배당을 먼저 지정하면 배당 필드는 NULLs
이고 가격 필드는 nulls
이됩니다.
두 가격 항목이 표시되지 않는 이유는 무엇입니까? 나는 그들이 그렇게 할 것으로 기대할 것입니다 FULL JOIN
*이 Fulljoins *의 순서를 뒤집기 : 그냥 IDS, 또는 fulljoin 문 쿼리 내부의 실제 위치를 교환하는 의미합니까? – dognose