두 개의 테이블이 있다고 가정 해 보겠습니다. Person 및 Clothes 모두이 테이블에는 Person 및 의류 항목에 대한 속성을 저장하는 키/값 테이블이 있습니다 . 내가 찾으려는 의류의을 구체적으로 조각을 감안할 때내부 모든 "키/값"에 일치하는 두 테이블 조인 정확히 일치하는 쌍
ClothingID | AttributeKey | AttributeValue
99 'Age' '20'
99 'Color' 'Blue'
60 'Age' '20'
:
PersonID | AttributeKey | AttributeValue
1 'Age' '20'
1 'Size' 'Large'
2 'Age' '20'
A는 것처럼 보일 수 있습니다 속성에 의류의 버전에 가입 :
A는 것처럼 보일 수 있습니다 속성에 사람의 버전에 합류 모든 속성 쌍과 정확히 일치하는 Person 항목. 예를 들어, ClothingID 60의 경우, PersonID 1에는 일치하는 AGE가 있었지만 추가 속성이 있더라도 PersonID 2 만 가져 오려고합니다. 그리고 기본적으로 그 반대는 같은 효과가 있습니다.
주어진 의류 99 Person 속성에 Color 속성이 없으므로 아무런 결과가 없길 기대합니다.
INNER JOIN은 분명히 사람의 특정 속성과 일치하는 의복의 속성을 제공합니다. 하지만 가능한 모든 경기가 실제로 일치하는 행만 반환하고 여분이있는 경우 다른 행을 버리기를 원합니다. OUTER JOIN은 일치하는 것들에 대해 NULL 값을 줄 것이지만, 어떻게 발견하고 1 행에 NULL이 있으면 모든 Person 행을 버릴 수 있습니까? 이 같은
당신이 당신의 테이블을 재구성하는 경우 속성이 저장되도록 자신의 분야에서 데이터를 쿼리 beco 더 쉽습니다. 예. 사람 (PersonID, 나이, 크기, 이름 등) 및 의복 (ClothingID, 나이, 색상, 유형, 설명 등) –