Postgresql-using-joins
PostgreSQL-参加
PostgreSQLの Joins 句は、データベース内の2つ以上のテーブルのレコードを結合するために使用されます。 JOINは、それぞれに共通の値を使用して2つのテーブルのフィールドを結合するための手段です。
PostgreSQLの結合タイプは-
- クロスジョイン
- インナージョイン
- 左アウタージョイン
- 正しいアウタージョイン
- フルアウタージョイン
先に進む前に、COMPANYとDEPARTMENTの2つのテーブルについて考えてみましょう。 COMPANYテーブルにデータを挿入するINSERTステートメントを見てきました。 COMPANYテーブルで利用可能なレコードのリストを想定してみましょう-
別のテーブルはDEPARTMENTであり、次の定義があります-
DEPARTMENTテーブルに入力するINSERTステートメントのリストは次のとおりです-
最後に、DEPARTMENTテーブルで利用可能なレコードの次のリストがあります-
クロスジョイン
CROSS JOINは、最初のテーブルのすべての行と2番目のテーブルのすべての行を一致させます。 入力テーブルにそれぞれx列とy列がある場合、結果のテーブルにはx + y列があります。 CROSS JOINは非常に大きなテーブルを生成する可能性があるため、適切な場合にのみ使用するように注意する必要があります。
以下は、CROSS JOINの構文です-
上記の表に基づいて、次のようにCROSS JOINを記述できます-
上記のクエリは、次の結果を生成します-
インナージョイン
INNER JOINは、結合述語に基づいて2つのテーブル(table1とtable2)の列値を組み合わせて、新しい結果テーブルを作成します。 クエリは、table1の各行とtable2の各行を比較して、結合述語を満たす行のすべてのペアを見つけます。 結合述語が満たされると、table1とtable2の行の一致した各ペアの列値が結果行に結合されます。
INNER JOINは、最も一般的な結合のタイプであり、デフォルトの結合タイプです。 オプションでINNERキーワードを使用できます。
以下はINNER JOINの構文です-
上記の表に基づいて、次のようにINNER JOINを書くことができます-
上記のクエリは、次の結果を生成します-
左アウタージョイン
OUTER JOINは、INNER JOINの拡張です。 SQL標準では、LEFT、RIGHT、FULLの3種類のOUTER JOINが定義されており、PostgreSQLはこれらすべてをサポートしています。
LEFT OUTER JOINの場合、最初に内部結合が実行されます。 次に、テーブルT2の行との結合条件を満たさないテーブルT1の各行について、T2の列にNULL値を持つ結合行が追加されます。 したがって、結合テーブルには、T1の各行に対して常に少なくとも1つの行があります。
以下はLEFT OUTER JOINの構文です-
上記の表に基づいて、次のように内部結合を記述できます-
上記のクエリは、次の結果を生成します-
正しいアウタージョイン
最初に、内部結合が実行されます。 次に、テーブルT1の行との結合条件を満たさないテーブルT2の各行について、T1の列にNULL値を持つ結合された行が追加されます。 これは左結合の逆です。結果テーブルには、T2の各行に対して常に行があります。
以下は、右外部結合の構文です-
上記の表に基づいて、次のように内部結合を記述できます-
上記のクエリは、次の結果を生成します-
フルアウタージョイン
最初に、内部結合が実行されます。 次に、テーブルT2の行との結合条件を満たさないテーブルT1の各行について、T2の列にNULL値を持つ結合行が追加されます。 さらに、T1のどの行とも結合条件を満たさないT2の各行に対して、T1の列にNULL値が含まれる結合行が追加されます。
以下は、FULL OUTER JOINの構文です-
上記の表に基づいて、次のように内部結合を記述できます-
上記のクエリは、次の結果を生成します-