복붙노트

[SQL] 왼쪽은 쿼리 첫 번째 테이블의 모든 행을 반환하지 JOIN

SQL

왼쪽은 쿼리 첫 번째 테이블의 모든 행을 반환하지 JOIN

SQL 서버 2008 R2에 대한 관리 스튜디오를 사용.

왼쪽을하려고은 가입과 나는 두 번째 테이블과 넥타이 할 수있는 행에 관계없이 첫 번째 테이블에서 모든 행을 반환해야합니다. 확실하지 그 권리를 설명했다.

이것은 내가 지금 무엇을 가지고 있습니다 :

select a.id, a.name, b.store, b.stock
from products a left join stock b
on a.id = b.id
where b.store = '001'
order by a.id

나는 회사가 판매하는 모든 제품을 반환하고 저장할 수도 001에서의 재고를 표시하는 쿼리가 필요합니다.

하지만 옳은 방법은 지금은 가게 001의 제품 재고의 언급이 행을 표시합니다.

그래서, 기본적으로, 나는 001 저장소가 언급되지 않은 경우 0 주식을 반환하는 쿼리를해야합니다.

단지 상점 002을 필요로 주식을 가지고 모든 제품은 주식으로 0으로뿐만 아니라 나열합니다.

해결법

  1. ==============================

    1.진짜 LEFT JOIN을 얻을 수있는 곳에서 ON으로 B 조건을 이동합니다. (일반 내부 조인 같이 WHERE 절에서 B 상태로, 그것은 실행 ...)

    진짜 LEFT JOIN을 얻을 수있는 곳에서 ON으로 B 조건을 이동합니다. (일반 내부 조인 같이 WHERE 절에서 B 상태로, 그것은 실행 ...)

    select a.id, a.name, b.store, b.stock
    from products a left join stock b
      on a.id = b.id and b.store = '001'
    order by a.id
    
  2. from https://stackoverflow.com/questions/30592768/left-join-query-not-returning-all-rows-in-first-table by cc-by-sa and MIT license