나는 항상 사용하기를 꺼려하지만, 최선의 접근 방법이 될 수있는 상황이 있습니까?전체 외부 조인을 사용하는 것이 좋은 경우는 언제입니까?
답변
드문 경우이지만 사용되는 경우가 있습니다. 일반적으로 예외 보고서 나 ETL 또는 양측이 결합하려고하는 데이터가있는 기타 매우 특별한 상황에서. 다른 방법은 INNER JOIN, LEFT JOIN (오른쪽은 IS NULL), RIGHT JOIN (왼쪽은 IS NULL)을 사용하고 UNION을하는 것입니다.이 방법은 각 개인을 더 명확하게 사용자 정의 할 수 있기 때문에 더 좋습니다 파생 된 열을 추가하여 어느면이 발견되었는지 또는 둘 다 발견되었는지 여부와 어느면에서 이길지를 나타냅니다.
나는 위키 피 디아 페이지 provides an example을 발견했다. 예를 들어
, 이것은 우리가 부서 와 직원이 각 부서에 각 직원을 볼 수 있지만, 각 부서 부서의 일부 아닌 각 직원 을 볼 수있는 직원이 없습니다. 내가 실제로 완전 외부 조인의 필요가 발생하지
주 ...
내가 사용했습니다 완전 외부 내 테이블 모두에서 일치하지 않는, 고아 데이터를 찾을 시도하고 싶어 할 때 조인 모든 결과 집합은 일치하는 것이 아닙니다.
드문 경우지만, 내가 사용하고있는 희귀 한 시간은 테스트 할 SQL에 사용 된 초기 INNER JOIN에서 데이터가 누락되었다고 생각되는 경우에 조인의 양쪽에서 NULL을 테스트하는 것입니다.
그들은 고아 데이터를 찾는 데 편리하지만 프로덕션 코드에서는 거의 사용하지 않습니다. 나는 "항상 하나를 사용하는 것이 바람직하지 않습니다"하지만 나는 현실 세계에서 덜 자주 내부 및 왼쪽/오른쪽 바깥쪽에 비해 최상의 솔루션이라고 생각합니다.
아주 희귀 한시기에 Full Outer Join
을 사용했는데 다른 데이터베이스의 두 고객 테이블을 비교하여 각 테이블에서 중복 된 것을 찾거나 두 테이블 구조를 비교하거나 하나의 테이블을 다른 테이블과 비교하거나 하나의 테이블에서 누락 된 정보를 다른 테이블과 비교하여 찾습니다.
바로 오늘 전체 외부 조인을 사용해야했습니다. 두 테이블을 비교하는 경우에 편리합니다. 내가 다음 정보를 얻고 싶었다 그래서 예를 들어, 내가 비교 된 두 개의 테이블이 서로 다른 시스템에서 있었다 :
- 표 A 표 B
- 표 B에없는 모든 행이는에없는 모든 행이 표 A 표 A 하나로
- 중복 또는 행 매칭 테이블 B
- 값은 실시 예 (다른 여부 : 표 A 및 표 B를 모두는 Acct가 # 12345, LoanID의 ABC123가 이자율 또는 대출금 그러나이 다른 가질
또한 CASE 문을 사용하는 SELECT 문에이 행에 플래그를 지정하는 이유를 '설명'하는 추가 필드를 만들었습니다. 예 : 이자율이 일치하지 않음/시스템 A 등에 Acct가 존재하지 않습니다.
그런 다음보기로 저장했습니다. 이제이 뷰를 사용하여 보고서를 만들어 데이터 수정/입력을 위해 사용자에게 보내거나 CASE 문을 사용하여 만든 'comment'필드로 특정 채우기를 가져 오는 데 사용할 수 있습니다 (예 : 일치하지 않는 모든 레코드 요금)을 저장 프로 시저에 저장하고 수정 등을 자동화하십시오.
예를 보려면 알려주십시오.
이것은 재사용이 가능한보기 (한 명의 명시적인 사용자와 목적이있는 사용자가 아닌)가 자주 권장하지 않는 이유입니다. 사람들은보기에 이런 물건을 넣고 누군가가 따라 와서 여러 가지 필터로 여러 번 사용합니다. 다음으로 시스템이 고정되어 있고 사람들이 왜 궁금해하는지 알고 있습니다. 필터링을 수행하면 필연적으로 이러한 결과 집합 (내부, 왼쪽 또는 오른쪽)으로 3 개 중 하나 이상의 부분이 삭제됩니다. Full을 사용할 때 쿼리 최적화 프로그램은 관련없는 조인을 버릴 방법이 없으므로 Filter 단계에서 버려두는 데 많은 추가 작업을 수행합니다. – bielawski
- 1. Javascript를 사용하는 것이 바람직한 경우는 언제입니까?
- 2. couchDB를 사용하는 것이 적절한 경우는 언제입니까?
- 3. API의 일부로 타사 라이브러리를 노출하는 것이 좋은 경우는 언제입니까?
- 4. 전체 외부 조인을 사용하지 않고 전체 외부 조인을 수행하는 방법
- 5. 제네릭 대 상속을 사용하는 것이 적합한 경우는 언제입니까?
- 6. XML 파일을 사용하여 정보를 저장하는 것이 좋은 경우는 언제입니까?
- 7. webclient 또는 httpwebrequest보다 WCF를 사용하는 것이 적절한 경우는 언제입니까?
- 8. AtomicBoolean 대신 Java에서 volatile 휘발성을 사용하는 것이 바람직한 경우는 언제입니까?
- 9. Rails 2.1에서 Time # utc를 사용하는 것이 적절한 경우는 언제입니까?
- 10. 데이터베이스를 사용하는 것이 좋은 생각은 언제입니까
- 11. PHP에서 변수 변수를 사용하는 경우는 언제입니까?
- 12. Windows 서비스를 통해 webservice를 사용하는 경우는 언제입니까?
- 13. 속성 대 메소드를 사용하는 경우는 언제입니까?
- 14. Java 메소드 선언에서 throws를 사용하는 경우는 언제입니까?
- 15. node.js에서 TCP와 HTTP를 사용하는 경우는 언제입니까?
- 16. while 루프에서 for 루프를 사용하는 경우는 언제입니까?
- 17. Entity Framework 4에서 ApplyOriginalValues를 사용하는 경우는 언제입니까?
- 18. 상속 대신 위임을 사용하는 경우는 언제입니까?
- 19. WPF 바인딩에서 경로를 사용하는 경우는 언제입니까?
- 20. 속성을 사용하고 Java에서지도를 사용하는 경우는 언제입니까?
- 21. web.config가 너무 큰 경우는 언제입니까?
- 22. 강력한 형식의보기를 사용해야하는 경우는 언제입니까?
- 23. 쿼리가 너무 큰 경우는 언제입니까?
- 24. PriorityQueue보다 TreeMap을 사용해야하는 경우는 언제입니까?
- 25. Regex 대 내장 String 메서드를 사용하는 경우는 언제입니까?
- 26. HTTP 412 오류로 응답하는 것이 적절한 경우는 언제입니까?
- 27. ivars를 포인터로 정의하는 경우는 언제입니까?
- 28. Assembly.CodeBase : 파일 URI가없는 경우는 언제입니까?
- 29. Windows 스레드 : InterlockedExchangeAdd()를 사용해야하는 경우는 언제입니까?
- 30. WXPython을 사용하여 클래스를 사용해야하는 경우는 언제입니까?
+1 : 대체 옵션 : –