반응형
왼쪽 조인을 적용하기 전에 테이블 필터링
2 개의 테이블이 있는데 2 개의 테이블이 결합 되기 전에 1 개의 테이블을 필터링하고 싶습니다 .
고객 테이블 :
╔══════════╦═══════╗
║ Customer ║ State ║
╠══════════╬═══════╣
║ A ║ S ║
║ B ║ V ║
║ C ║ L ║
╚══════════╩═══════╝
엔트리 테이블 :
╔══════════╦═══════╦══════════╗
║ Customer ║ Entry ║ Category ║
╠══════════╬═══════╬══════════╣
║ A ║ 5575 ║ D ║
║ A ║ 6532 ║ C ║
║ A ║ 3215 ║ D ║
║ A ║ 5645 ║ M ║
║ B ║ 3331 ║ A ║
║ B ║ 4445 ║ D ║
╚══════════╩═══════╩══════════╝
OK, Left Join을 원하므로 Entry 테이블에 관련 레코드가 있는지 여부에 관계없이 Customer 테이블에서 모든 레코드를 가져옵니다. 그러나 조인 전에 항목 테이블에서 범주 D를 필터링하고 싶습니다 .
원하는 결과 :
╔══════════╦═══════╦═══════╗
║ Customer ║ State ║ Entry ║
╠══════════╬═══════╬═══════╣
║ A ║ S ║ 5575 ║
║ A ║ S ║ 3215 ║
║ B ║ A ║ 4445 ║
║ C ║ L ║ NULL ║
╚══════════╩═══════╩═══════╝
다음 쿼리를 수행하는 경우 :
SELECT Customer.Customer, Customer.State, Entry.Entry
FROM Customer
LEFT JOIN Entry
ON Customer.Customer=Entry.Customer
WHERE Entry.Category='D'
이것은 마지막 레코드를 필터링합니다.
따라서 왼쪽 테이블의 모든 행을 원하고이를 카테고리 D로 필터링 된 입력 테이블에 조인합니다.
사전에 도움을 주셔서 감사합니다!
WHERE
필터를 JOIN
조건 으로 이동해야합니다 .
SELECT c.Customer, c.State, e.Entry
FROM Customer c
LEFT JOIN Entry e
ON c.Customer=e.Customer
AND e.Category='D'
다음을 수행 할 수도 있습니다.
SELECT c.Customer, c.State, e.Entry
FROM Customer AS c
LEFT JOIN (SELECT * FROM Entry WHERE Category='D') AS e
ON c.Customer=e.Customer
여기에 SQL Fiddle
또는...
SELECT c.Customer, c.State, e.Entry
FROM Customer c
LEFT JOIN Entry e
ON c.Customer=e.Customer
WHERE e.Category IS NULL or e.Category='D'
참고URL : https://stackoverflow.com/questions/15077053/filter-table-before-applying-left-join
반응형
'Development Tip' 카테고리의 다른 글
py.test에게 특정 디렉토리를 건너 뛰도록 지시하는 방법은 무엇입니까? (0) | 2020.12.04 |
---|---|
XML 레이아웃에서 조각을 선언하는 경우 번들을 어떻게 전달합니까? (0) | 2020.12.04 |
TV 소음처럼 보이도록 캔버스 애니메이션 (0) | 2020.12.04 |
http 응답 본문 (json) 만 출력하고 다른 헤더는 출력하지 않도록 curl을 얻는 방법 (0) | 2020.12.04 |
기본 구현을 사용하는 null-safe 매핑 비교기 (0) | 2020.12.04 |