2014-09-09 4 views
-4

내가왼쪽 외부 조인과 조인의 차이점은 무엇입니까? 아래 쿼리

select a.strAssociateId, 
a.strAssociateName, 
a.strPhoto, isnull(sum(iCount),0) as zypcoins 
from CIOChallenge_tbl_Associates a 
left outer join CIOChallenge_tbl_AssociatePoints ap 
on 
a.strAssociateId=ap.strAssociateId 
and 
ap.iRewardId=1 
where iRoleId=(select iRoleId from CIOChallenge_tbl_Roles where strRoleDescription like '%student%') 
group by a.strAssociateId, 
a.strAssociateName, 
a.strPhoto 

select a.strAssociateId, 
a.strAssociateName, 
a.strPhoto, 
isnull(sum(iCount),0) as zypcoins 
from CIOChallenge_tbl_Associates a 
join CIOChallenge_tbl_AssociatePoints ap 
on 
a.strAssociateId=ap.strAssociateId 
and 
ap.iRewardId=1 
where iRoleId=(select iRoleId from CIOChallenge_tbl_Roles where strRoleDescription like   '%student%') 
group by a.strAssociateId, 
a.strAssociateName, 
a.strPhoto 
여기

내가 외부 조인 왼쪽 사용 내가이 쿼리는 또한 위의 차이를 알 수있다 (필자는이 모든 학생들 Zypcoins을받을 필요)에 가입 사용 거기에 학생 zypcoins을 얻을 수있는 다른 방법

+0

모든 학생이 해당 표에 점수가없는 경우 차이가 있음을 알 수 있습니다. 내부 조인은이 항목을 제거하지만 외부 조인은 NULL을 채 웁니다. – keltar

+0

오! 좋아, 의견을 주셔서 감사합니다 Ketlar :) –

+0

이러한 차이점에 대한 훌륭한 설명은 [SQL JOIN의 시각적 설명] (http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/)을 참조하십시오. . –

답변

1

여기서 조인에 대해 알게 된 http://www.w3schools.com/sql/sql_join.asp. 몇 가지 예를 적용하고 테스트 할 수도 있습니다. 일반적인 대답입니다.

JOIN은 -

LEFT OUTER JOIN (LEFT JOIN)

에 합류하는 두 테이블 (또는 subquerys)에있는 행을 얻을 - 왼쪽 테이블 (하위 쿼리)에서 모든 행을 얻고 두 번째의 일치가없는 행에 대한 테이블 (부속 조회)이 널을 삽입합니다.

RIGHT OUTER JOIN (RIGHT JOIN) - 오른쪽 테이블 (하위 쿼리)의 모든 행을 가져오고 첫 번째 테이블 (하위 쿼리)에 일치하는 행이없는 경우에는 null을 삽입합니다.

FULL OUTER JOIN (FULL JOINS) - 두 테이블의 데이터를 모두 가져오고 첫 번째 또는 두 번째 테이블에 일치하는 데이터가없는 경우 null을 추가합니다.

실제로 조건을 사용하여 PK/FK 또는 intexed 열에 가입하면 쿼리가 훨씬 빨라집니다.

관련 문제