TOP

データベースsqlite3 その6

テーブルの結合

テーブルの結合

正規化されているテーブルは、データを表示するときにテーブルを結合して使用する場合が多いです。

下で示されているように、結合式が無ければ、レコード相互のすべての組み合わせが析出されます。結合のタイプにより、条件式をつければ、条件にあったデータを取り出せます。

ここでは、好きな色情報を、個人情報テーブルと色情報テーブルに格納し、二つのテーブルを結合してみることにします。

内部結合 [INNER JOIN]

内部結合は、結合条件式により、指定したカラムの値が一致するデータだけを取り出します。

select target_table.column name,...from target_table inner join joinning_table on joinning_condition;

target_tableにjoinning_tableをjoinning_condition条件で結合させて表示する。

結合条件式USING(列名)で式を簡略化する [USING]

USING (共通のコラム名)
結合条件式 ON のなかで、table名.共通のコラム名 = another table名.共通のコラム名である場合
using 共通のコラム名 とすることが出来る。

外部結合 [OUTER JOIN]

外部結合は、結合条件式により、指定したカラムの値が一致するデータであるかにかかわらず、とりだします。

select target_table.column name,...from target_table outer join joinning_table on joinning_condition;

target_tableにjoinning_tableをjoinning_condition条件で結合させて表示する。

SQL 標準では LEFT、RIGHT、FULL の 3 種類の OUTER JOIN が定義されていますが、SQLite はLEFT OUTER JOINのみをサポートしています。この場合は、target_table の左に、joinning table が析出される。結合条件式が真であるレコード以外に、真とならないレコードも付け加わる。その場合は、target table 側のフィールドは、null として表示される。

交差結合 [CLOSS JOIN]

交差結合は、2 つのテーブルのデータの全ての組み合わせを取得するものです。

select target_table.column name,...from target_table closs join joinning_table on joinning_condition;
target_tableにjoinning_tableをjoinning_condition条件で結合させて表示する。

以下は、favorite_colorテーブルとcolorテーブルの組み合わせでchois_clothesテーブルを作成しています。

自己結合

自己結合は、同じテーブルの中で、同一の列をそれぞれ別名をつけて結合することです。

SELECT column_name FROM table_name  AS alias1 
  INNER JOIN || OUTER LEFT JOIN || CLOSS JOIN
  alias AS alias2
  [ON condition];

2 つ以上の SELECT ステートメントの結果を結合する [UNION][UNION ALL]

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

UNION/UNION ALL

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
各 SELECT が同じ数の列を選択し、同じ数の列式を、同じデータ型で、同じ順序にする必要があります

UNION ALL は単純にテーブルのデータを下につなげる。重複は許容されます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください