概要:このチュートリアルでは、PostgreSQLのLEFT JOIN
句を使用して複数のテーブルからデータを選択する方法を学習します。
PostgreSQL LEFT JOIN句の概要
A
とB
の二つのテーブルがあるとします。,
テーブル内の各行A
テーブル内の各行B
一方、B
テーブル内の唯一の対応する行を持っていますA
。
テーブルA
からデータを選択するには、テーブルB
に対応する行がある場合とない場合があります。LEFT JOIN
句を使用します。,
次のステートメントは、LEFT JOIN
テーブルを結合する構文を示していますA
テーブルとB
:
Code language: SQL (Structured Query Language) (sql)
テーブルを結合するA
テーブルとA
テーブルを結合するA
div id=”41cbd4ed8b”>
テーブル左結合を使用すると、次の手順に従います。
- まず、
SELECT
句でデータを選択する両方のテーブルの列を指定します。 - 次に、
A
FROM
句に左のテーブル(テーブルA
)を指定します。, - 第三に、右のテーブル(テーブル
B
)をLEFT JOIN
句とON
キーワードの後に結合条件を指定します。
LEFT JOIN
句は、左のテーブルからデータの選択を開始します。 左側のテーブルの各行について、pka
列の値と、右側のテーブルのfka
列の各行の値を比較します。,
これらの値が等しい場合、left join句は、SELECT
句に表示される列を含む新しい行を作成し、この行を結果セットに追加します。これらの値が等しくない場合、left join句は、SELECT
句に表示される列を含む新しい行も作成します。 さらに、右のテーブルから来る列をNULLで埋めます。,
次のベン図は、LEFT JOIN
節がどのように機能するかを示しています。
LEFT JOIN
はLEFT JOIN
とも呼ばれることに注意してください。div id=”c78884287f”>
.
PostgreSQL LEFT JOINの例
サンプルデータベースから次のfilm
およびinventory
テーブルを見てみましょう。,
film
テーブルの各行には、inventory
テーブルにゼロまたは多くの行があります。 inventory
テーブルの各行には、film
テーブルの唯一の行があります。
film_id
列は、film
とinventory
テーブル間のリンクを確立します。,
次のステートメントは、LEFT JOIN
句を使用してfilm
テーブルとinventory
テーブルを結合します。
film
テーブルの行にinventory
テーブルに一致する行がない場合、この行のinventory_id
列の値はNULL
です。,
次のステートメントは、WHERE
インベントリにないフィルムを見つけるための句を追加します。
次のステートメントは、同じ結果を返します。, 違いは、クエリをより簡潔にするためにテーブルエイリアスを使用することです。
両方のテーブルにON
句で使用されている同じ列名がある場合、iv id=”11987f0d95″このテクニックは、あるテーブルから、別のテーブルに一致する行がない行を選択する場合に便利です。