테이블 A, 테이블 B 및 테이블 C를 함께 조인해야하는 세 개의 테이블이 있습니다.키당 여러 레코드를 반환하지 않고 키당 여러 레코드가있는 테이블에서이 조인을 수행하려면 어떻게합니까?
'userid'필드에서 tableA와 tableB가 서로 조인되고 'numeric_id'에서 tableC가 조인됩니다.
제 문제는 각 numeric_id에 대해 tableC에 여러 레코드가 있다는 것입니다. 질의를 numeric_id의 별개 목록으로 어떻게 제한 할 수 있습니까?
이 쿼리는 예상대로 23 개 행을 반환 : 각 numeric_id이 tableC
SELECT * FROM tableA, tableB,tableC
WHERE PRODUCT_CODE = 'AS432'
AND tableA.userid = tableB.userid
AND tableB.numeric_id = tableC.numeric_id
에 여러 레코드를 가지고 있기 때문에
가SELECT * FROM tableA, tableB
WHERE PRODUCT_CODE = 'AS432'
AND tableA.userid = tableB.userid
이 쿼리 내가이 다수를 반환하지 않고 가입 수행 할 수있는 방법 52 개 행을 반환 tableC의 numeric_id 당 레코드 수?
예 데이터 :
tableA:
userid first_name
jsamsonite John
sjohnson Sam
hpulaski Harry
TableB의 :
userid last_name numeric_id
jsamsonite Samsonite 56
sjohnson Johnson 57
hpulaski Pulaski 58
tableC :
numeric_id transaction_number region_group
56 56345 789
56 89848 789
57 89800 987
57 52355 987
57 49939 987
58 49892 398
가 이상적으로 쿼리가
tableA.userid tableA.first_name tableB.userid tableB.last_name tableB.numeric_ID tableC.numeric_id tableC.region_group
jsamsonite John jsamsonite Samsonite 56 56 789
sjohnson Sam sjohnson Johnson 57 57 987
hpulaski Harry Hpulaski Pulaski 58 58 398
C에서 어떤 값을 사용합니까? C가 중복 된 이유가 있습니다. 또는 C 복제본의 모든 값입니까? col1, col2 및 numeric_ID가 각 레코드에 대해 일관성이 있다고 가정하면 tableC 대신 (Select Distinct col1, col2, TableC에서 Numeric_ID를 선택하여) 조인 할 수 있습니다. 중복을 제거 할 수 있습니다. 아니면 C로만 numeric_ID를 가진 레코드를 원한다면 필터를 C로 사용하고 있습니까? 그렇다면 존재를 사용해야합니다. – xQbert
몇 가지 샘플 데이터와 원하는 결과를 제공하십시오. –
샘플 데이터 – KinsDotNet