muroiです。
今日のデータベースの研修では、外部結合についてと、前回までの復習テストを行いました。
外部結合とは
外部結合とは、SQLにおいて結合条件に対応するレコードがない場合でも、軸となるテーブルの方のレコードが除外されない結合の方法です。
使用するには以下のようにJOIN句を記述します。
(LEFT or RIGHT) OUTER JOIN
最初の部分のLEFTかRIGHTは、軸となるテーブルの指定をします。
実際に外部結合を使用した例:
以下のようなテーブルを作ってやってみたいと思います。
| id | name |
|---|---|
| 1 | カレー |
| 2 | チーズカレー |
| 3 | グリーンカレー |
| id | 辛さ |
|---|---|
| 2 | 激辛 |
| 3 | 激甘 |
| 4 | ハバネロ |
これらの表を使って、左外部結合と右外部結合を試したいと思います。
まずは左外部結合から。
SELECT
c.id
,c.name
,k.辛さ
FROM
カレーTABLE AS c
LEFT OUTER JOIN
辛さTABLE AS k
ON
c.id = k.id
;
このSQLを実行すると以下のようなレコードを取り出す事ができます。
| id | name | 辛さ |
|---|---|---|
| 1 | カレー | |
| 2 | チーズカレー | 激辛 |
| 3 | グリーンカレー | 激甘 |
このように、カレーTABLEを軸として結合するため、レコードが存在しないものも含めて表示してくれました。
今度は逆に右外部結合をしてみたいと思います。
SELECT
c.id
,c.name
,k.辛さ
FROM
カレーTABLE AS c
RIGHT OUTER JOIN
辛さTABLE AS k
ON
c.id = k.id
;
今度は以下のような結果を取ることができました。
| id | name | 辛さ |
|---|---|---|
| 2 | チーズカレー | 激辛 |
| 3 | グリーンカレー | 激甘 |
| 4 | ハバネロ |
これは辛さTABLEを軸として結合したため、辛さTABLEにないレコードも含め取得する事ができました。
実際に使ってみて、どちらを軸として結合すればいいのかなど非常に苦戦しました。少しずつ慣れていけるようにどんどんSQLを書いて覚えていこうと思います。
また本日は、前回までの確認を含め確認テストを行いました。結果は後日という事なのですがやはり苦手としていた所はだいぶ苦戦しました。
しかしこれで自分が苦手だとしている所の確認にもなったので、苦手な所をしっかり復習して覚えていきたいです!
動画です。ご覧ください。

by スタートアップ研修記 » データベース、自己結合をする, on 07.23.08 @ 6:21 PM
[...] ichikawaです。 データベースについて書きます。 前回の授業で外部結合を学びましたが、今回は同じテーブル同士をつなげる自己結合について勉強しました。 [...]