여러 하위 테이블에 대해 하나의 마스터 테이블을 비교하는 방법

앨런 피셔

기본 키를 구성하는 PO_BreakOutAll두 개의 열 ( PO_ID, PO_LN_NO) 로만 구성된 ~ 3000 행이있는 마스터 테이블 ( ) 이 하나 있습니다. 또한 마스터 테이블의 데이터 하위 집합이있는 여러 개의 다른 테이블도 있습니다 (또는 그럴 것으로 예상 됨). 모든 테이블은 마스터 테이블과 동일한 스키마입니다.

모든 테이블에는 다음과 같은 정확한 스키마가 있습니다.

PO_ID     char(5) PK
PO_LN_NO  int     PK

유효성 검사와 중복을 찾으려면 두 가지 유형의 비교를 수행해야합니다.

먼저 마스터 테이블의 모든 행이 다른 하위 테이블 중 하나에 만 존재하는지 확인합니다.

두 번째로 하위 테이블에서 행이 중복되지 않도록해야합니다. 동일한 행이 둘 이상의 자식 테이블에 존재할 수 있으며이를 찾아야합니다.

각 테이블을 별도의 쿼리로 수행 할 수 있지만 모든 하위 테이블을 한 번에 비교하는 하나의 쿼리를 작성하는 방법을 찾지 못했습니다.

지금까지 가지고 있지만 작동하지 않습니다.

SELECT a.PO_ID as all_PO,
       a.PO_LN_NO,
       c.PO_ID as Cummings_PO,
       c.PO_LN_NO,
       f.PO_ID as filter_PO,
       f.PO_LN_NO,
       fo.PO_ID as fixedObl_PO,
       fo.PO_LN_NO
FROM 
       PO_BreakOutAll   a
       LEFT OUTER JOIN
       PO_Cummins       c   ON (c.PO_ID = a.PO_ID AND c.PO_LN_NO = a.PO_LN_NO)
       LEFT OUTER JOIN
       PO_Filters       f   ON (f.PO_ID = a.PO_ID AND f.PO_LN_NO = a.PO_LN_NO)
       LEFT OUTER JOIN
       PO_FixedOblig    fo  ON (fo.PO_ID = a.PO_ID AND fo.PO_LN_NO = a.PO_LN_NO)
앤디 할러데이

@gordon linoff가 전반적인 해결책을 가지고 있다고 생각합니다. CTE 패러다임을 사용하려는 경우 여기 에 중복 질문에 답하는 Fiddle기반으로예제가 있습니다 .

WITH CTE (PO_ID,PO_LN_NO,TableName) AS

(SELECT 
 PO_ID,
 PO_LN_NO,
 'Cummings' as TableName


 FROM PO_Cummins
 UNION ALL
 SELECT 
 PO_ID,
 PO_LN_NO,
 'Filters' as TableName

 FROM PO_Filters
 UNION ALL
 SELECT 
 PO_ID,
 PO_LN_NO,
 'Office' as TableName

 FROM PO_Office )

SELECT
  PO_BreakOutAll.PO_ID, 
  PO_BreakOutAll.PO_LN_NO,
  CHILD_DATA.TABLENAME AS DUP_TABLENAME
FROM
  PO_BreakOutAll
INNER JOIN (
  SELECT PO_ID, PO_LN_NO, COUNT(1) AS DUP_COUNTER
  FROM CTE
  GROUP BY PO_ID, PO_LN_NO
  HAVING COUNT(1) > 1 
  ) DUPS ON DUPS.PO_ID = PO_BreakOutAll.PO_ID AND DUPS.PO_LN_NO = PO_BreakOutAll.PO_LN_NO
INNER JOIN (
  SELECT PO_ID, PO_LN_NO, TABLENAME
  FROM CTE
  ) CHILD_DATA
  ON CHILD_DATA.PO_ID = PO_BreakOutAll.PO_ID AND CHILD_DATA.PO_LN_NO = PO_BreakOutAll.PO_LN_NO
ORDER BY PO_ID, PO_LN_NO, DUP_TABLENAME

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

다른 테이블의 각 ID에 대해 하나의 테이블에 여러 행을 삽입하는 방법

분류에서Dev

데이터가 테이블에있는 동안 스키마 비교를 사용하여 테이블을 업데이트하는 방법은 무엇입니까?

분류에서Dev

데이터베이스의 여러 테이블에 대해 동일한 쿼리를 실행하는 방법

분류에서Dev

하나의 테이블에서 여러 테이블로 데이터를 이동하는 효과적인 방법

분류에서Dev

하나의 테이블 행에 여러 데이터를 저장하는 방법

분류에서Dev

여러 배열을 하나의 데이터베이스 테이블에 넣는 방법

분류에서Dev

데이터 테이블 검색 기능이 여러 값에 대해 테이블을 필터링하지 않음

분류에서Dev

테이블 및 헤더의 여러 열에 걸쳐 DT 데이터 테이블 셀을 확장하는 방법

분류에서Dev

UNION을 사용하는 동안 여러 테이블에서 하나의 테이블에 삽입하는 방법

분류에서Dev

cakephp의 테이블에서 이전 데이터와 비교하여 여러 행을 삽입하고 삭제하는 방법은 무엇입니까?

분류에서Dev

테이블 뷰 셀에서 여러 텍스트 필드에 대해 신속하게 이동하는 방법

분류에서Dev

테이블 잠금을 피하기 위해 Spring 데이터 JPA를 여러 테이블에 삽입

분류에서Dev

하나의 테이블에 여러 데이터베이스 테이블 표시

분류에서Dev

하나의 값에 대해 여러 테이블 선택

분류에서Dev

여러 열을 사용하는 여러 테이블에 대해 그룹화를 사용하는 방법

분류에서Dev

여러 테이블 중 특정 adf 테이블에서 스키닝을 방지하는 방법

분류에서Dev

다른 테이블의 열 / 필드를 사용하여 PostgreSQL 테이블을 클러스터링하는 방법

분류에서Dev

하나의 테이블에 대해 sequelize 로깅을 활성화하는 방법

분류에서Dev

필터링을 위해 SQL을 사용하여 테이블간에 상호 작용하는 방법

분류에서Dev

다른 테이블에 대해 스팬 방법을 확장하는 방법

분류에서Dev

여러 테이블에 대한 쿼리 결과를 비교하는 방법은 무엇입니까?

분류에서Dev

여러 소스에 대한 병렬 실행 시간을 위해 테이블 / tibble / df를 빌드하는 방법은 무엇입니까?

분류에서Dev

해시 테이블에서 충돌을 해결하는 방법 비교

분류에서Dev

PHP pdo를 사용하여 mysql 데이터베이스에 여러 테이블을 설치하는 방법

분류에서Dev

C #에서 하나의 데이터 테이블에 여러 테이블 추가

분류에서Dev

MySQL의 여러 데이터베이스에서 동일한 테이블을 변경하는 방법

분류에서Dev

SQL Server에서 여러 데이터베이스의 반복 테이블을 조인하는 방법

분류에서Dev

여러 송장에 대해 페이지가 매겨지고 두 개의 테이블 릭스 (tablii?)가있는 SSRS 송장을 코딩하는 방법

분류에서Dev

SQL-여러 테이블 대 하나의 큰 테이블

Related 관련 기사

  1. 1

    다른 테이블의 각 ID에 대해 하나의 테이블에 여러 행을 삽입하는 방법

  2. 2

    데이터가 테이블에있는 동안 스키마 비교를 사용하여 테이블을 업데이트하는 방법은 무엇입니까?

  3. 3

    데이터베이스의 여러 테이블에 대해 동일한 쿼리를 실행하는 방법

  4. 4

    하나의 테이블에서 여러 테이블로 데이터를 이동하는 효과적인 방법

  5. 5

    하나의 테이블 행에 여러 데이터를 저장하는 방법

  6. 6

    여러 배열을 하나의 데이터베이스 테이블에 넣는 방법

  7. 7

    데이터 테이블 검색 기능이 여러 값에 대해 테이블을 필터링하지 않음

  8. 8

    테이블 및 헤더의 여러 열에 걸쳐 DT 데이터 테이블 셀을 확장하는 방법

  9. 9

    UNION을 사용하는 동안 여러 테이블에서 하나의 테이블에 삽입하는 방법

  10. 10

    cakephp의 테이블에서 이전 데이터와 비교하여 여러 행을 삽입하고 삭제하는 방법은 무엇입니까?

  11. 11

    테이블 뷰 셀에서 여러 텍스트 필드에 대해 신속하게 이동하는 방법

  12. 12

    테이블 잠금을 피하기 위해 Spring 데이터 JPA를 여러 테이블에 삽입

  13. 13

    하나의 테이블에 여러 데이터베이스 테이블 표시

  14. 14

    하나의 값에 대해 여러 테이블 선택

  15. 15

    여러 열을 사용하는 여러 테이블에 대해 그룹화를 사용하는 방법

  16. 16

    여러 테이블 중 특정 adf 테이블에서 스키닝을 방지하는 방법

  17. 17

    다른 테이블의 열 / 필드를 사용하여 PostgreSQL 테이블을 클러스터링하는 방법

  18. 18

    하나의 테이블에 대해 sequelize 로깅을 활성화하는 방법

  19. 19

    필터링을 위해 SQL을 사용하여 테이블간에 상호 작용하는 방법

  20. 20

    다른 테이블에 대해 스팬 방법을 확장하는 방법

  21. 21

    여러 테이블에 대한 쿼리 결과를 비교하는 방법은 무엇입니까?

  22. 22

    여러 소스에 대한 병렬 실행 시간을 위해 테이블 / tibble / df를 빌드하는 방법은 무엇입니까?

  23. 23

    해시 테이블에서 충돌을 해결하는 방법 비교

  24. 24

    PHP pdo를 사용하여 mysql 데이터베이스에 여러 테이블을 설치하는 방법

  25. 25

    C #에서 하나의 데이터 테이블에 여러 테이블 추가

  26. 26

    MySQL의 여러 데이터베이스에서 동일한 테이블을 변경하는 방법

  27. 27

    SQL Server에서 여러 데이터베이스의 반복 테이블을 조인하는 방법

  28. 28

    여러 송장에 대해 페이지가 매겨지고 두 개의 테이블 릭스 (tablii?)가있는 SSRS 송장을 코딩하는 방법

  29. 29

    SQL-여러 테이블 대 하나의 큰 테이블

뜨겁다태그

보관