オプショナリティとテーブル結合 (2)
前回の続きです。今回は、「必須 - 必須」の場合と「必須 - 任意」の場合について、サンプルデータを使って説明します。
前回: id:simply-k:20100818:1282140691
次回: id:simply-k:20100820:1282234146
「必須 - 必須」の場合
社員テーブル
社員ID | 氏名 | 部署ID |
---|---|---|
0001 | 鈴木 広 | 01 |
0002 | 佐藤 幸子 | 02 |
0003 | 山本 健二 | 02 |
0004 | 田中 優子 | 99 |
部署テーブル
部署ID | 部署名 |
---|---|
01 | 経理 |
02 | 営業 |
99 | 所属なし |
テーブル間のオプショナリティ
- 部署テーブルの各レコードに対し、対応する社員テーブルのレコードが1つ以上存在します。 (多側:必須)
- 社員テーブルの各レコードに対し、対応する部署テーブルのレコードが1つ存在します。 (1側:必須)
INNER JOIN / LEFT JOIN / RIGHT JOIN / FULL JOIN
社員ID | 氏名 | 社員_部署ID | 部署_部署ID | 部署名 |
---|---|---|---|---|
0001 | 鈴木 広 | 01 | 01 | 経理 |
0002 | 佐藤 幸子 | 02 | 02 | 営業 |
0003 | 山本 健二 | 02 | 02 | 営業 |
0004 | 田中 優子 | 99 | 99 | 所属なし |
INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOINは、全て同じ結果となります。
「必須 - 任意」の場合
社員テーブル
社員ID | 氏名 | 部署ID |
---|---|---|
0001 | 鈴木 広 | 01 |
0002 | 佐藤 幸子 | 02 |
0003 | 山本 健二 | 02 |
0004 | 田中 優子 | NULL |
部署テーブル
部署ID | 部署名 |
---|---|
01 | 経理 |
02 | 営業 |
テーブル間のオプショナリティ
- 部署テーブルの各レコードに対し、対応する社員テーブルのレコードが1つ以上存在します。 (多側:必須)
- 社員テーブルの各レコードに対し、対応する部署テーブルのレコードが存在しない場合があります。 (1側:任意)
INNER JOIN / RIGHT JOIN
社員ID | 氏名 | 社員_部署ID | 部署_部署ID | 部署名 |
---|---|---|---|---|
0001 | 鈴木 広 | 01 | 01 | 経理 |
0002 | 佐藤 幸子 | 02 | 02 | 営業 |
0003 | 山本 健二 | 02 | 02 | 営業 |
INNER JOINとRIGHT JOINは、同じ結果となります。
LEFT JOIN / FULL JOIN
社員ID | 氏名 | 社員_部署ID | 部署_部署ID | 部署名 |
---|---|---|---|---|
0001 | 鈴木 広 | 01 | 01 | 経理 |
0002 | 佐藤 幸子 | 02 | 02 | 営業 |
0003 | 山本 健二 | 02 | 02 | 営業 |
0004 | 田中 優子 | NULL | NULL | NULL |
LEFT JOINとFULL JOINは、同じ結果となります。
次回は、「任意 - 必須」の場合と「任意 - 任意」の場合について説明します。
前回: id:simply-k:20100818:1282140691
次回: id:simply-k:20100820:1282234146