概要:このチュートリアルでは、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テーブルを結合するAdiv id=”41cbd4ed8b”>
テーブル左結合を使用すると、次の手順に従います。
- まず、
SELECT句でデータを選択する両方のテーブルの列を指定します。 - 次に、
AFROM句に左のテーブル(テーブル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″このテクニックは、あるテーブルから、別のテーブルに一致する行がない行を選択する場合に便利です。