0
テーブルの結合として、OUTER JOIN(外部結合)とINNER JOIN(内部結合)を勉強したけど、他にも自己結合というのがあるらしい
Contents
自己結合
通常の結合は、テーブルAとテーブルBのように異なるテーブル同士の結合を意味するが、自己結合はテーブルAとテーブルAのように同一テーブルを対象に結合を行う。
「同一テーブル?」となるが、物理的に同一テーブルが存在していると考えるのではなく、あくまで「同じテーブルがもう一つあると想像」して、結合を行う。
クロス結合(全てのレコードの組み合わせ)
1 2 |
SELECT P1.name AS name _1, P2.name AS name_2 FROM Products P1 CROSS JOIN Products P2; |
自己結合(INNER JOINを使って、同一要素を削除)
1 2 3 |
SELECT P1.name, P2.name FROM Products P1 INNER JOIN Products P2 ON P1.name <> P2.name; -- 重複削除 |
自己結合(INNER JOINを使って、順序を入れ替えた組み合わせを削除)
1 2 3 |
SELECT P1.name, P2.name FROM Products P1 INNER JOIN Products P2 ON P1.name > P2.name; |
自己結合(INNER JOINを使って、部分的に不一致の組み合わせを検索)
1 2 3 4 5 |
SELECT DISTINCT P1.name, P1.price FROM Products P1 INNER JOIN Products P2 ON P1.price = P2.price AND P1.name <> P2.name ORDER BY P1.price; |
「=」ではなく、「<」「>」「<>」といった比較演算子を使って結合を行うことを、非等値結合という。
自己結合はこの非等値結合と組み合わせて使うのが基本になる
0