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