2014-05-15 1 views
1

첫 번째 쿼리 :두 쿼리 (조건 위치)의 차이점은 무엇입니까?

SELECT SUM(Rent.paid) AS Rent__summed_rents 
FROM rents AS Rent 
LEFT JOIN contracts ON contracts.id = Rent.id 
LEFT JOIN units ON contracts.unit_id = units.id AND units.owner_id = 29 

두 번째 쿼리 :

SELECT SUM(Rent.paid) AS Rent__summed_rents 
FROM rents AS Rent 
LEFT JOIN contracts ON contracts.id = Rent.id 
LEFT JOIN units ON contracts.unit_id = units.id 
WHERE units.owner_id = 29 

나는 결과가 동일하지 않습니다 가리켜 야!

답변

4

필터링 조건이 다릅니다.

예를 들어, 첫 번째 쿼리에서 조인 중 하나가 실제로 레코드를 생성하는지 여부에 관계없이 sum(rent.paid)을 선택합니다. 여기서 이점은 조인 작업에 관계없이 데이터가 필요하지만 조인을 필터링하려는 경우 조인 절 자체에 조건부 필터를 넣는 것입니다. 두 번째 쿼리에서

는 조건부 필터는 곳에있는과 함께, 그것은 단지생산하는 것입니다 귀하의 sum(rent.paid) (가)

+0

감사 (그들이 왼쪽 경우에도 조인) 작업을 조인합니다. 내가 정확히 이해한다면 : 첫 번째 조건은'합 '이 아닌'조인'을 필터링하는 것입니다. – yossi

+1

맞습니다. – mituw16

관련 문제