2011-12-20 1 views
0

왼쪽 및 오른쪽 조인 연산자와 관련하여 다소 혼란 스럽습니다.다음 조인은 이에 해당합니까?

select * 
from <left table> lt 
    left join <right table> rt on lt.pk = rt.fk 

저는 조인의 "왼쪽"쪽이 정확히 어느 쪽인지 정확히 혼란스러워했습니다. "왼쪽 조인"키워드의 왼쪽에있는 표는 ... "왼쪽 표"또는 왼쪽 편에있는 왼쪽 표에있는 표입니다. 왼쪽 표에있는 것과 같습니다. 기호. ... 이제 다음 select 문을 고려 나는 그러나

을해야하는데 나타냅니다 기사를 읽었습니다 ... 위의 코드 비트에서

select * 
from <some table> st 
    inner join <left table> lt on st.pk = lt.fk 
    left join <right table r on rt.fk = st.pk 

왼쪽 표는 무엇입니까? 하나는 모호성이나 불명료 함 때문에 (실제로는 직접적으로 남지 않았기 때문에) 이전의 문장을 고려해 볼 수 있습니다 ... 나는 "왼쪽 테이블"을 on 절에 지정하는 것이 더 합리적이라고 생각합니다 .

그래서 저의 모든 비트가 그 논리와 싸우고있는 것처럼 보입니다 ... 약간의 설명이 필요합니다 ... 제발 고마워요.

+0

그래서 실제로 ... 가능한 복제본의 대답을 좋아합니다. Ruakh 제공 - "왼쪽"면은 실제로 부서와 직원을 결합한 결과입니다. 조인은 왼쪽 연관이므로 x 조인과 조인은 (x 조인 y) 조인과 동일합니다. - 그래서 왼쪽은 어떤 테이블과 왼쪽 테이블 사이의 내부 조인의 결과입니다 ... 맞습니까? –

답변

2

나열된 첫 번째 테이블은 모든 행이 반환되는 테이블입니다. LEFT JOIN 다음에 명명 된 테이블은 첫 번째 테이블과 일치하는 행만 반환하며 일치하는 항목이없는 경우 NULL 값을 반환합니다.

0

일반적으로 - 아니요, 필터 테이블을 하나 더 소개하기 때문에. lt의 모든 행에 해당 행의 유일한 행이 있습니다. 행의 양이 같고 열의 모음이 달라집니다. 하지만 첫 번째 쿼리의 결과 집합은 두 번째 쿼리에서 결과 집합의 하위 집합 (st 테이블의 열에서만 차이가 있음)이됩니다.