【基本・応用情報技術者】SQL ~結合~
スポンサーリンク
こんにちは。たろすです。
今回はSQLの結合について説明します。
結合とは
複数のテーブルをくっつけて一つのテーブルとして扱う方法を結合といいます。
結合には主に二種類あります。
一つは内部結合です。
内部結合は結合条件に合致するデータがある場合のみ出力します。
もう一つは外部結合です。
外部結合は結合条件に合致するデータがなくても出力することができます。
内部結合
内部結合には書き方が二種類あります。
SELECT カラム名1, カラム名2,... FROM テーブル名1 [INNER] JOIN テーブル名2,... ON 結合条件;
SELECT カラム名1, カラム名2,... FROM テーブル名1, テーブル名2,... WHERE 結合条件;
例えば以下のような二つのテーブルがあるとします。
これに対し次のようなSQLを投げると、
SELECT * FROM 受注 JOIN 顧客 ON 受注.顧客番号 = 顧客.顧客番号;
以下のようにデータが取れます。
結合する列名が同じ場合はUSINGを使うこともできます。
SELECT * FROM 受注 JOIN 顧客 ON USING(顧客番号);
逆に結合する列名が異なる場合は「受注.」や「顧客.」といったテーブル名の指定を省略することもできます。
上記のSQLは次のように書くこともできます。
SELECT * FROM 受注, 顧客 WHERE 受注.顧客番号 = 顧客.顧客番号;
外部結合
外部結合には三種類あります。
左外部結合
左外部結合は次のように使います。
SELECT カラム名1, カラム名2,... FROM テーブル名1 LEFT [OUTER] JOIN テーブル名2 ON 結合条件;
先程のテーブルに以下のSQLを投げます。
SELECT * FROM 受注明細 LEFT JOIN 商品 ON 受注明細.商品コード = 商品.商品コード;
すると以下のように出力されます。
内部結合と違い、条件に合致するデータが存在しない場合すべてのカラムをNULLとして結合します。
右外部結合
左外部結合の反対です。
SELECT カラム名1, カラム名2,... FROM テーブル名1 RIGHT [OUTER] JOIN テーブル名2 ON 結合条件;
先程のテーブルに以下のSQLを投げると
SELECT * FROM 受注明細 RIGHT JOIN 商品 ON 受注明細.商品コード = 商品.商品コード;
以下のような出力を得ます。
完全外部結合
左外部結合と右外部結合を合わせたものです。
完全外部結合はこのように使います。
SELECT カラム名1, カラム名2,... FROM テーブル名1 FULL [OUTER] JOIN テーブル名2 ON 結合条件;
先程のテーブルに以下のSQLを投げると、
SELECT * FROM 受注明細 FULL JOIN 商品 ON 受注明細.商品コード = 商品.商品コード;
となります。