SQL의 자체 요인은 마치 두 개의 별도 테이블 인 것처럼 테이블 자체에 합류하려는 경우 사용됩니다. 이 기술은 테이블에 동일한 테이블 내의 다른 데이터와 관계가있는 데이터가 포함되어있을 때 특히 유용합니다. 자체 교육을 수행하려면 다른 별칭을 제공하여 동일한 테이블과 동일한 테이블을 처리합니다.
다음은 자체 교육을 구현하는 방법에 대한 단계별 안내서입니다.
employees
테이블이있는 경우 e1
및 e2
별칭으로 사용할 수 있습니다.employees
테이블에서 직원과 관리자를 찾기 위해 자체 합의 쿼리를 작성하는 방법의 예입니다. 여기서 manager_id
는 employee_id
의 외국 키입니다.<code class="sql">SELECT e1.employee_id, e1.name AS employee_name, e2.name AS manager_name FROM employees e1 LEFT JOIN employees e2 ON e1.manager_id = e2.employee_id;</code>
이 쿼리에서 e1
직원을 나타내고 e2
관리자를 나타냅니다. Join 조건은 e1
에서 e2
에서 employee_id
에 manager_id
연결하여 직원을 해당 관리자에게 효과적으로 매핑합니다.
Self Join은 SQL 쿼리에서 몇 가지 장점을 제공합니다.
그렇습니다. 자체 주인은 SQL에서 계층 적 데이터를 나타내는 효과적인 방법입니다. 계층 적 데이터 구조에는 종종 테이블의 항목이 같은 테이블 내의 다른 항목을 참조하는 부모-자식 관계가 포함됩니다. 자가 요인은 이러한 관계를 통과 할 수 있으므로 그러한 시나리오에 적합합니다.
예를 들어, 카테고리 트리와 같은 계층 구조를 나타내는 테이블 categories
고려하십시오.
<code class="sql">CREATE TABLE categories ( category_id INT PRIMARY KEY, name VARCHAR(100), parent_id INT, FOREIGN KEY (parent_id) REFERENCES categories(category_id) ); INSERT INTO categories (category_id, name, parent_id) VALUES (1, 'Electronics', NULL), (2, 'Computers', 1), (3, 'Laptops', 2), (4, 'Desktops', 2);</code>
자체 합의를 사용하여 계층 구조를 검색하려면 다음과 같이 쿼리 할 수 있습니다.
<code class="sql">SELECT c1.name AS category, c2.name AS parent_category FROM categories c1 LEFT JOIN categories c2 ON c1.parent_id = c2.category_id;</code>
이 쿼리는 각 범주와 함께 부모 카테고리와 함께 출력하여 계층 구조를 효과적으로 표시합니다.
자체 주인을 구현할 때는 쿼리의 정확성과 성능을 보장하기 위해 몇 가지 일반적인 실수를 피하는 것이 중요합니다.
NULL
값을 초래할 수 있습니다. LEFT
, RIGHT
또는 FULL
조인을 적절하게 사용하여 이러한 NULL
값을 항상 설명하십시오.이러한 일반적인 함정을 피함으로써 자체 주인을 효과적이고 효율적으로 사용하여 동일한 테이블 내에서 관계형 및 계층 적 데이터를 관리하고 쿼리 할 수 있습니다.
위 내용은 SQL에서 selfjoin을 어떻게 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!