inner join とサブクエリについて調べたので、備忘録的にまとめようと思いました。
・inner join ってなに?
←内部結合とは2つのテーブルでそれぞれ結合の対象となるカラムを指定し、それぞれのカラムに同じ値が格納されているデータを結合して取得するものです。
(引用元: https://www.dbonline.jp/sqlite/join/index1.html)
・ほかのjoinには何があるの?
1・left join on
2・using
3・inner join
4・outer join などがあるようです。
(引用元: https://rfs.jp/sb/sql/s03/03_3.html#OUTER_JOIN)
・4との違いですが、これをよく表した説明があります。
・リレーションを作成した際、片方のテーブルに情報がない場合に、inner joinの場合は、それを除外して表示する。
・これに対して、outer joinの場合は、片方にないところはNULLを表示する。(行自体は存在させる。)
・1との違いですが、left join onは、左側のテーブルの要素について、マッチするレコードがなかった場合であっても、レコードが表示される。その際、右側のテーブルのフィールド値はすべてNULLになる。
・usingは、結合する条件が同じ名前のフィールド名である場合に、それを使って結合条件を指定することができます。
こんなところですかね。
次に、サブクエリについてまとめます。
サブクエリは、どこに埋め込むかによって分類ができるようです。
・どんな種類のサブクエリがあるのでしょうか?
・select句
・from句
・having句
・select句のサブクエリ
単一のselect文ではグループ化された結果と全体の結果を同時に取得することはできませんが、サブクエリなら異なる値を同時に取得することが可能です。
・from句のサブクエリ
これが最も頻繁に利用されるようです。
from句のサブクエリは、その結果をテーブルとして渡します。
例えば、購入履歴テーブルを購入者でグループ化し、その平均値を算出したりします。
・having句でのサブクエリ
使用方法はwhere句のサブクエリと同じだそうです。
(引用元:https://rfs.jp/sb/sql/s03/select_sql.html)
参照元の素晴らしいサイト様のおかげで、理解が深まった気がしました。ありがとうございます。