2010-01-19 19 views

답변

19

드문 경우이지만 사용되는 경우가 있습니다. 일반적으로 예외 보고서 나 ETL 또는 양측이 결합하려고하는 데이터가있는 기타 매우 특별한 상황에서. 다른 방법은 INNER JOIN, LEFT JOIN (오른쪽은 IS NULL), RIGHT JOIN (왼쪽은 IS NULL)을 사용하고 UNION을하는 것입니다.이 방법은 각 개인을 더 명확하게 사용자 정의 할 수 있기 때문에 더 좋습니다 파생 된 열을 추가하여 어느면이 발견되었는지 또는 둘 다 발견되었는지 여부와 어느면에서 이길지를 나타냅니다.

+1

+1 : 대체 옵션 : –

9

나는 위키 피 디아 페이지 provides an example을 발견했다. 예를 들어

, 이것은 우리가 부서 와 직원이 각 부서에 각 직원을 볼 수 있지만, 각 부서 부서의 일부 아닌 각 직원 을 볼 수있는 직원이 없습니다. 내가 실제로 완전 외부 조인의 필요가 발생하지

주 ...

8

내가 사용했습니다 완전 외부 내 테이블 모두에서 일치하지 않는, 고아 데이터를 찾을 시도하고 싶어 할 때 조인 모든 결과 집합은 일치하는 것이 아닙니다.

1

드문 경우지만, 내가 사용하고있는 희귀 한 시간은 테스트 할 SQL에 사용 된 초기 INNER JOIN에서 데이터가 누락되었다고 생각되는 경우에 조인의 양쪽에서 NULL을 테스트하는 것입니다.

0

그들은 고아 데이터를 찾는 데 편리하지만 프로덕션 코드에서는 거의 사용하지 않습니다. 나는 "항상 하나를 사용하는 것이 바람직하지 않습니다"하지만 나는 현실 세계에서 덜 자주 내부 및 왼쪽/오른쪽 바깥쪽에 비해 최상의 솔루션이라고 생각합니다.

0

아주 희귀 한시기에 Full Outer Join을 사용했는데 다른 데이터베이스의 두 고객 테이블을 비교하여 각 테이블에서 중복 된 것을 찾거나 두 테이블 구조를 비교하거나 하나의 테이블을 다른 테이블과 비교하거나 하나의 테이블에서 누락 된 정보를 다른 테이블과 비교하여 찾습니다.

0

바로 오늘 전체 외부 조인을 사용해야했습니다. 두 테이블을 비교하는 경우에 편리합니다. 내가 다음 정보를 얻고 싶었다 그래서 예를 들어, 내가 비교 된 두 개의 테이블이 서로 다른 시스템에서 있었다 :

  1. 표 A 표 B
  2. 표 B에없는 모든 행이는에없는 모든 행이 표 A 표 A 하나로
  3. 중복 또는 행 매칭 테이블 B
  4. 값은 실시 예 (다른 여부 : 표 A 및 표 B를 모두는 Acct가 # 12345, LoanID의 ABC123가 이자율 또는 대출금 그러나이
  5. 다른 가질

또한 CASE 문을 사용하는 SELECT 문에이 행에 플래그를 지정하는 이유를 '설명'하는 추가 필드를 만들었습니다. 예 : 이자율이 일치하지 않음/시스템 A 등에 Acct가 존재하지 않습니다.

그런 다음보기로 저장했습니다. 이제이 뷰를 사용하여 보고서를 만들어 데이터 수정/입력을 위해 사용자에게 보내거나 CASE 문을 사용하여 만든 'comment'필드로 특정 채우기를 가져 오는 데 사용할 수 있습니다 (예 : 일치하지 않는 모든 레코드 요금)을 저장 프로 시저에 저장하고 수정 등을 자동화하십시오.

예를 보려면 알려주십시오.

+0

이것은 재사용이 가능한보기 (한 명의 명시적인 사용자와 목적이있는 사용자가 아닌)가 자주 권장하지 않는 이유입니다. 사람들은보기에 이런 물건을 넣고 누군가가 따라 와서 여러 가지 필터로 여러 번 사용합니다. 다음으로 시스템이 고정되어 있고 사람들이 왜 궁금해하는지 알고 있습니다. 필터링을 수행하면 필연적으로 이러한 결과 집합 (내부, 왼쪽 또는 오른쪽)으로 3 개 중 하나 이상의 부분이 삭제됩니다. Full을 사용할 때 쿼리 최적화 프로그램은 관련없는 조인을 버릴 방법이 없으므로 Filter 단계에서 버려두는 데 많은 추가 작업을 수행합니다. – bielawski

관련 문제