데이터는 외래 키로 정의된 관계를 통해 여러 테이블에 저장되는 경우가 많습니다. 그러나 때로는 두 테이블이 직접적인 외래 키 관계를 가지지 않더라도 여전히 세 번째 테이블을 통해 조인될 수 있습니다. 이 질문은 이러한 조인을 수행하여 여러 테이블에서 특정 정보를 추출하는 방법을 보여줍니다.
테이블 조인에 외래 키가 필요하다는 가정과 달리 외래 키는 필요하지 않습니다. 대신, 각 테이블에 정의된 조건자를 기반으로 테이블을 조인할 수 있습니다.
직접적인 외래 키 관계가 없는 테이블을 조인하려면 다음 단계를 따르세요.
CROSS JOIN
또는 INNER JOIN
연산자를 사용하여 테이블을 결합합니다. WHERE
절을 사용하세요. 문 및 테이블:
각 테이블에는 포함된 행을 정의하는 조건자가 있습니다. 예를 들어 Species
테이블에는 종 이름이 나무 종류 및 최대 높이에 해당하는 행이 포함되어 있습니다.
쿼리 조건자:
쿼리에는 FROM
, WHERE
및 기타 절을 기반으로 하는 술어도 있습니다. 테이블 별칭은 열 이름 바꾸기를 허용하고 조인 조건을 용이하게 합니다.
테이블 조인:
CROSS JOIN
및 INNER JOIN
는 AND
을 사용하여 술어를 결합합니다. UNION
은 OR
을 사용하고, EXCEPT
은 AND NOT
을 사용하여 술어를 결합합니다. ON
및 WHERE
절을 사용하여 추가 조인 조건을 지정할 수 있습니다.
선정표:
올바른 테이블을 선택하려면 원하는 출력을 고려하고 필요한 열이 포함된 테이블을 식별하세요. 그들이 공유하는 술어에 따라 합류하세요.
외래 키 및 쿼리:
외래 키는 쿼리 실행에 영향을 주지 않습니다. 무결성 제약 조건을 적용하지만 연결을 제한하지는 않습니다. 쿼리는 테이블 조건자에 대해 평가됩니다.
예시 쿼리:
"ARCTIC" 지역 산림의 산림명, 종명, 목재 종류를 추출하려면:
<code class="language-sql">SELECT Forest.Fo_name, Species.Sp_name, Species.Sp_woodtype FROM Forest INNER JOIN Tree ON Forest.Fo_name = Tree.Tr_forest INNER JOIN Species ON Tree.Tr_species = Species.Sp_name WHERE Forest.Fo_loc='ARCTIC' ORDER BY Forest.Fo_name, Species.Sp_name;</code>
이 쿼리는 Tr_species
및 Tr_forest
열을 통해 Forest
, Species
및 Tree
테이블을 효과적으로 조인하고 Fo_loc
열을 기준으로 결과를 필터링합니다. 출력은 숲과 종 이름을 기준으로 정렬됩니다.
참고: 논리적 정확성을 보장하고 세 테이블을 조인할 수 있도록 예제 쿼리가 설명에서 수정되었습니다. 원래 예의 ON Tree.Tr_species=Tree.Tr_forest
조건은 테이블 내의 서로 다른 두 열을 결합하려고 하기 때문에 잘못되었습니다. 수정된 쿼리는 올바른 조인 조건을 사용합니다.
위 내용은 직접적인 외래 키 관계 없이 테이블에 조인하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!