2017-10-25 1 views
0

복잡한 SQL 쿼리에 문제가 있습니다. 도움을 주시면 감사하겠습니다. 나는 테이블 & &의 이름을 단순화했습니다.두 SQL 쿼리의 출력 비교?

SCHEMA: 

    Business Account 
    payment_account_id 
    business_id 

    Business Misc 
    business_user_id 
    business_id 

    Payment Account 
    business_user_id 
    payment_account_id 

은 두 개 이상의 결제 계좌, 하나 개 이상의 지불 계정을 가지고 비즈니스 사용자를 모두 가지고있는 모든 비즈니스를 받아, 나에게 그 지불 계정이있는 경우의 중복을 제공하는 SQL 쿼리를 필요 같은 이드.

은 지금까지 내가 들어 왔 :

business_with_multiple_accounts = 

select * 
from "Business Account" 
group by business_id 
having count(distinct payment_account_id) > 1; 

users_with_multiple_accounts = 

select * 
from "Payment Account" 
group by business_user_id 
having count(distinct payment_account_id) > 1; 

는 난 그냥 (!하지만 내가 잘못 될 수 있음)이 두 개의 출력을 비교할 필요가 있다고 생각하지만 진행하는 방법을 확실 해요. 저는 여러 가지 방법으로 쿼리를 중첩 시키려고했지만 세 방향 조인에서 "Business Misc"테이블을 사용했습니다.

도움을 주셔서 감사합니다.

+0

A [mcve] 향해 보관하십시오. PS "이 두 출력을 비교하는 것"은 무엇을 의미합니까? ID가있는 두 개의 테이블이 있습니다. 결과가 행에 표시되는 행은 해당 테이블에있는 행을 기준으로 결정됩니까? – philipxy

+1

Plz 샘플 입력 및 예상 출력을 보여줍니다! –

+0

이 바이올린에서 복사하여 기술 세부 사항을 기술하십시오 : http://sqlfiddle.com/#!9/c9835 –

답변

0

이 시도하십시오

business_with_multiple_accounts = 
select * 
from business_acct 
where 
     (Select Distinct count(*) 
     from 
     payment_acct 
     where payment_acct.payment_acct_id= business_acct.payment_acct_id 
     )>1 
group by business_id 

users_with_multiple_accounts = 
select * 
from business_misc 
where 
     (Select Distinct count(*) 
     from 
     payment_acct 
     where payment_acct.business_user_id= business_misc.business_user_id 
     )>1 
group by business_user_id