[SQL] 필터 테이블 왼쪽 가입 적용하기 전에
SQL필터 테이블 왼쪽 가입 적용하기 전에
나는이 두 테이블이 함께 결합되기 전에 한 테이블을 필터링하려면,이 개 테이블을 가지고있다.
고객 테이블 :
╔══════════╦═══════╗
║ 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 ║
╚══════════╩═══════╩══════════╝
나는 관계없이 항목 테이블에 관련 기록이 있는지의 고객 테이블에서 모든 레코드를 얻을 수 있도록 왼쪽에 참여하기에 나는 원한다. 그러나 나는 가입하기 전에 항목을 테이블에 카테고리 D에 필터링 할.
원하는 결과 :
╔══════════╦═══════╦═══════╗
║ Customer ║ State ║ Entry ║
╠══════════╬═══════╬═══════╣
║ A ║ S ║ 5575 ║
║ A ║ S ║ 3215 ║
║ B ║ V ║ 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.에 필터링 된 항목 테이블에 조인 그래서
사전에 어떤 도움에 감사합니다!
해결법
-
==============================
1.당신은이 조건을 가입하는 WHERE 필터를 이동해야합니다 :
당신은이 조건을 가입하는 WHERE 필터를 이동해야합니다 :
SELECT c.Customer, c.State, e.Entry FROM Customer c LEFT JOIN Entry e ON c.Customer=e.Customer AND e.Category='D'
데모와 SQL 바이올린을 참조하십시오
-
==============================
2.당신은 또한 할 수있다 :
당신은 또한 할 수있다 :
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 바이올린 여기
-
==============================
3.또는...
또는...
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'
from https://stackoverflow.com/questions/15077053/filter-table-before-applying-left-join by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오라클 : '= ANY ()'대 'IN ()' (0) | 2020.05.20 |
---|---|
[SQL] PostgreSQL의 테이블은 존재하지만 가져올 때 쿼리 "관계가 존재하지 않습니다" (0) | 2020.05.20 |
[SQL] 어떻게 바꿔 제약에 (0) | 2020.05.20 |
[SQL] 날짜 시간에서 시간을 추출 (2005 SQL 서버) (0) | 2020.05.20 |
[SQL] 안드로이드, 방법의 SQLiteDatabase에서 SQL 파일을 간부 인하는 (0) | 2020.05.20 |