ぱーりー on rails

たまごにひびすらわれてない

SQL *結合について

交差結合

複数のテーブルまたはビューにあるすべての行を単純に結合する方法。
ex)
SELECT * FROM 結合するテーブル名または列名 CROSS JOIN 結合するテーブル名または列名

SELECT * FROM テーブル名, テーブル名
としても交差結合と同じ結果が得られる。


内部結合
交差結合の結果から、
指定した列の値が一致するデータのみを取り出す方法。

ex)
SELECT * FROM 結合するテーブル名 INNER JOIN 結合するテーブル名 ON 一致の条件となる列名 = 一致の条件となる列名

SELECT * FROM tbl_aaa INNER JOIN tbl_bbb ON id = no;

これはWHERE句を使って記述することもできる。

SELECT * FROM tbl_aaa , tbl_bbb WHERE tbl_aaa.id = tbl_bbb.no;

このとき

一致するidとnoがない場合はそれは表示されない。


外部結合
内部結合した結果に加えて一致する値がなかったデータも取り出すことができる。
外部結合には、左外部結合右外部結合全外部結合の三種類があります。


左外部結合
左側のテーブルを基準に結合する。
右側のテーブルに一致する値がなくても左側のテーブルのデータはすべて取り出される。


ex)
SELECT * FROM tbl_aaa LEFT JOIN tbl_bbb ON id = no;


右外部結合
これは左外部結合の右バージョンです。

全外部結合
右テーブル側のデータはすべてとる、右テーブル側だけのデータはすべてとるときたら最後は
両方とる働きをするのがこの結合です。


WHERE句での外部結合
SQL serverの場合)
「=」演算子の左に「*」をつけるとLEFT JOIN,右だと RIGHT JOINと同じ働きをする。

ex)
SELECT * FROM tbl_aaa, tbl_bbb WHERE id *= no;
この場合左外部結合と同じ働きをする。