'그룹화'를 사용하여 쿼리에서 항목을 중복 :제외 내가 세 개의 테이블이
내가 쿼리하고자하는 항목이 고객에게 단일 배달하는 파트너에 의해 전달 된 이는table 'received'
------------------
partner_id int
item_id int
table 'delivered'
------------------
item_id int
delivery_date date
customer_id int
table 'partners'
------------------
id int
name text
table 'customers'
------------------
id int
name text
. 때로는 서로 다른 파트너가 동일한 항목을 전달하기 때문에 전달 된 항목에 속임수가 포함되어 있지 않아야 필터링 할 수 있습니다.
select
partner_id,
count(distinct item_id)
from
received
where item_id in
(select distinct item_id from delivered where delivery_date = '2010-07-14' and customer_id = 1)
group by partner_id;
그러나이 나에게 파트너가 제공 한 속는 포함한 모든 전달 항목을 제공 : 내가 함께 왔어요 무엇
이있다. 나는 이것을 오랫동안 생각해 왔으며, 'except', 'having'등을 사용하여 sub-select를 시도했지만 나에게 더 많은 것을 얻은 점을 얻지 못했습니다.
나는 올바른 방향으로 어떤 힌트를 주면 좋을 것입니다. 고맙습니다.
:item_id | delivery_date | customer_id
--------|---------------|------------
1 | 2010-07-14 | 1
2 | 2010-07-14 | 1
3 | 2010-07-14 | 1
전류 출력은
partner_id | item_id
-----------|---------
1 | 1
1 | 2
2 | 1
2 | 3
테이블을 '접수' '전달'
테이블 :
- - 편집 여기
몇 가지 샘플 데이터입니다
partner | amount
--------|------
1 | 2
2 | 2
원하는 출력은 다음과 같습니다 ID 2와 파트너가 이미 업데이트 이후 파트너 1.
감사합니다.하지만이 쿼리는 여전히 모든 중복 항목을 제공합니다. – fucx
샘플 데이터 또는 테이블 덤프를 추가 할 수 있습니까? 아니면 예상되는 출력? 정확하게 여기에 정확히 무엇이 있는지 나는 잘 모르겠습니다. –
샘플 데이터와 예상 출력을 추가했습니다. 정확한 문제가 무엇인지 명확하게하기를 바랍니다. – fucx