INNER JOINとLEFT JOIN

http://okwave.jp/qa/q746515.html

対応させるべきはinner joinとouter joinなんですけど、
left join は left outer join と同等です。

実際に実行して確認していたけれど、
INNER JOINの場合、比較したテーブルそれぞれに値がある場合のみ、
結果を返してくれる。条件としても使えそう。
(そのテーブル同士で同じIDを持つものだけを抽出、的な)

で、OUTER JOINは、比較した際に値がなければ、NULLで返す。
要するに、値がなくても結果を返してくれる。

値が必須かどうか、みたいな感じぽい。

innter joinは結合する相手のテーブルに対応するデータが
ある場合のみ結果を返しますが、outer joinは相手の
テーブルに対応するデータが無い場合、そのカラムを
NULLとして返します。

OUTER JOINには、

*  LEFT OUTER JOIN
*  RIGHT OUTER JOIN
*  FULL OUTER JOIN

の3つがあるよう。

LEFT JOINではFROMの後に書かれたテーブルのデータだけを取得します。RIGHT JOINではJOINの後に書かれたテーブルのデータだけを取得します。
http://www.dbonline.jp/mysql/select/index15.html

実際に試してみると、
LEFT JOINの場合は、FROMの後に書かれたテーブルを基準に返す。
RIGHT JOINの場合は、JOINの後に書かれたテーブルを基準に返す。

あと、USINGを使えば少し短く出来る。

結合するカラムの名前が同じ場合にはONの代わりにUSINGを使用して次のように記述することもできます。
「USING (col_name)」というのは「ON tbl_name1.col_name = tbl_name2.col_name」と同じことです。
http://www.dbonline.jp/mysql/select/index15.html

sql
   このエントリーをはてなブックマークに追加