だれでもエンジニアさんの動画で、テーブル結合を学ぶ

はじめに

29分から始まる内容だ。

INNER JOINとOUTER JOIN

まずは、この2つの概要をネットで調べてみる。

TECH PLAYの記事によると、INNER JOINは複数のテーブルを結合する際に用いられる。

基本構文は以下となる。

SELECT 列名
FROM テーブル1
INNER JOIN テーブル2
ON テーブル1.キーとなる列名 = テーブル2.キーとなる列名;

OUTER JOINについても、TECH PLAYの記事を参考にしてみた。

OUTER JOINによって、結合するカラムの値が一致しない場合でも、関連性を持ったデータを結合することができる。

基本構文は以下となる。

SELECT 列名
FROM テーブル1
LEFT/RIGHT/FULL OUTER JOIN テーブル2
ON テーブル1.キーとなる列名 = テーブル2.キーとなる列名;

いまいちピンと来ていない。

動画で理解していこう。

今回使用するテーブル

火星人のmartiansテーブルと、惑星の渡航歴のhistoriesテーブルが存在する。

INNER JOIN

2つのテーブルを紐づけるのに使用するのが、JOIN。

martiansテーブルのidと、historiesテーブルのmartians_idを紐づける。

INNER JOINで、2つのテーブルを内部結合させることができる。

以下の構文は、「martiansテーブル(m)のidと、histriesテーブル(h)のmartians_idを紐づけて、結合させる」というような意味だ。

ASの後に書いた名前で、テーブル名にアクセスすることができる。

現状では、historiesテーブルのidとmartians_idが残ってしまっている。

以下のお題に対応するには、どうすればいいだろうか?

正解は、列を指定するということだ。mariansテーブルのnameとhistoriesテーブルのplanetを指定している。

複数のテーブルを結合する時にカラムの名前が被るものがあるので、m.nameというようにテーブル名を指定してあげて、カラムにアクセスする。

OUTER JOINの使い所

INNER JOINだと、紐づけるデータがなければ、そのレコードは削除されてしまう。

LEFT OUTER JOINを使用すれば、紐づけたカラムが無いレコードは、nullとして追加される。ベースとなる左のカラムは全部残しておいてくれる。

INNER JOINとLEFT OUTER JOINの違い

INNER JOINは、内部結合と呼ばれるように、ベン図で言うと、二つが重なる部分。

一方、LEFT OUTER JOINは、外部結合と呼ばれ、ベン図で言うと、左の要素全てが対象となる。

条件に合わないデータも欲しい時に、LEFT OUTER JOINを使う。

コメントを残す

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