EasyWork-SYStem

もっと簡単にしてよ!を叶えたい

テーブル結合

 データベースのテーブルはそれぞれの情報単位で構築されているので、実際に利用するときには、テーブルを組み合わせることが多くなります。このテーブルを組み合わせる際に使われるのがテーブル結合文(INNER JOIN文、LEFT JOIN文やRIGHT JOIN文)です。

 なんとなく感覚で使ってしまっていたので、その結果をまとめてみました。

 次の2つのテーブルがあるとします。

品目ID品名製造元ID
1電源プラグ3
2石ころnull
3塗料1
品目テーブル
メーカーIDメーカー名
1株式会社A化学日本
2B株式会社日本
3株式会社C電機日本
メーカーテーブル

 この2つのテーブルを「製造元ID=メーカーID」の結合条件で、それぞれの方法で結合してみます。

INNER JOIN

SELECT 品目ID,品名,メーカー名 FROM 品目テーブル
INNER JOIN メーカーテーブル ON 製造元ID = メーカーID

 「内部結合」と呼ばれます。2つのテーブルに共に存在するデータを抽出します。

品目ID品名メーカー名
1電源プラグ株式会社C電機
3塗料株式会社A化学
抽出結果

LEFT JOIN

SELECT 品目ID,品名,メーカー名 FROM 品目テーブル
LEFT JOIN メーカーテーブル ON 製造元ID = メーカーID

 「外部結合」と呼ばれます。2つのテーブルで、接続条件の左側に書かれたテーブルを基準にデータを抽出します。したがって、左側に有って、右側に無いデータはnull値になります。

品目ID品名メーカー名
1電源プラグ株式会社C電機
2石ころnull
3塗料株式会社A化学
抽出結果

RIGHT JOIN

SELECT 品目ID,品名,メーカー名 FROM 品目テーブル
RIGHT JOIN メーカーテーブル ON 製造元ID = メーカーID

 「外部結合」と呼ばれます。2つのテーブルで、接続条件の右側に書かれたテーブルを基準にデータを抽出します。したがって、右側に有って、左側に無いデータはnull値になります。

品目ID品名メーカー名
1電源プラグ株式会社C電機
nullnullB株式会社
3塗料株式会社A化学
抽出結果

まとめ

 2つのテーブルを結合したい場合、基になるテーブルがあって、そこに付随するテーブルを組み合わせたいパターンが多いと思います。

 どちらかが基になるのですから、結合のだいたいは、LEFT JOIN文で片付いてしまうことでしょう。それでも、付随する情報が無いデータはいらないということもあるので、INNER JOIN文も利用しますが、実のところ、経験上いまだにRIGHT JOIN文の使いどころが見当たりません。文脈的に左から右へ繋がっていた方が読みやすいと感じるからです、なので、個人的にRIGHT JOINは、ほぼ利用していません。

 とか書いてる最中に、こういう使い方があるかな・・・とか思いつくのですから面白いものです。


CSS Database GET HTML MSMM POST SQL SQLServer WordPress 印刷



デル株式会社

ウイルスバスター公式トレンドマイクロ・オンラインショップ

プレミアムバンダイ