ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 7.2 Equijoins, self-joins, and cross-joins
    데이터베이스 시스템 2024. 11. 8. 12:41

    Equijoins 동등조인

    동등 조인은 두 테이블의 열을 = 연산자로 비교한다. 대부분의 조인은 동등 조인이다. 비동등 조인<, >와 같은, = 이외의 연산자로 열을 비교한다.

    아래 그림에서, 비동등 조인은 모든 구매자와 구매자의 최대 가격보다 낮은 가격의 부동산을 선택한다.

    Figure 7.2.1: Non-equijoin example


    Refer to the following tables.

    1) Which equijoin generates the following result?

    ▼View solution

    더보기
    SELECT Class.Name, Student.Name
    FROM Class
    LEFT JOIN Student
    ON Student.Code = Class.Code
    AND StudentGrade >= 3.0;

    2) Which non-equijoin returns students who scored higher than the class average?

    ▼View solution

    더보기
    SELECT Student.Name
    FROM Class
    INNER JOIN Student
    ON StudentGrade > AverageGrade
    AND Student.Code = Class.Code;

    3) Which join clauses can be used in a non-equijoin query?

    더보기

    All JOIN clauses


    Self-joins

    셀프조인은 본인 테이블에 조인하는 것이다. 테이블의 비교 가능한 데이터 타입을 가진 어떤 열이라도 비교할 수 있다. 외래 키와 참조된 기본 키가 같은 테이블에 있는 경우, 자기 조인은 보통 이러한 키 열을 비교한다. 셀프 조인에서는 왼쪽과 오른쪽 테이블을 구분하기 위해 별칭(alias)이 무조건 필요하다. 

     

    아래 그림에서 A는 왼쪽 테이블의 별칭이고, B는 오른쪽 테이블의 별칭이다. A.Name은 왼쪽 테이블의 Name 열로, employee을 나타낸다. B.Name은 오른쪽 테이블의 Name 열로, manager를 나타낸다. 결과는 직원과 각 직원의 관리자를 함께 보여준다.

    Figure 7.2.2: Self-join example


    Refer to the following table.

    CREATE TABLE Person (
      ID INT,
      FullName VARCHAR(20) NOT NULL,
      FirstParentID INT,
      SecondParentID INT,
      PRIMARY KEY (ID),
      FOREIGN KEY (FirstParentID) REFERENCES Person(ID),
      FOREIGN KEY (SecondParentID) REFERENCES Person(ID)
    );

    The following self-join lists the name of each person with the person's parent (or legal guardian). If a person has two parents, each parent appears in a separate row.

    SELECT ___A___, Parent.FullName
    FROM Person AS Child
    INNER JOIN ___B___
    ON Child.FirstParentID = Parent.ID OR ___C___;

    What is A,B,C?

    더보기
    Child.FullName
    Person AS Parent
    Child.SecondParentID = Parent.ID

    Cross-joins

    크로스 조인은 두 테이블의 열을 비교하지 않고 결합한다. CROSS JOIN 절을 사용하며 ON 절이 필요하지 않다. 그 결과, 두 테이블의 모든 가능한 행 조합이 결과에 나타난다.

    Figure 7.2.3: Cross-join example


     

    Equijoin: Compares columns of two tables with the = operator.

    Non-equijoin: Compares columns with an operator other than =, such as < and >.

    Self-join: Joins a table to itself.

    Cross-join: Combines two tables without comparing columns.

    '데이터베이스 시스템' 카테고리의 다른 글

    7.4 LAB - Select lesson schedule with inner join  (0) 2024.11.10
    7.3 LAB - Select movie ratings with left join  (0) 2024.11.09
    7.1 Join queries  (0) 2024.11.07
    6.3 Aggregate functions  (0) 2024.10.23
    6.2 Simple Functions  (0) 2024.10.22
Designed by Tistory.