はじめに
どうもこんにちは torihaziです
今日はSQL学んで少しくらいしてから、
こんにちはしてくる サブクエリとかいう人に対して
なんのためにいるのかよーわからんという人に向けて
多分この理解で大体合ってるという筆者の絵を元にした説明をしていこうと思います。
絵で理解です。
堅苦しい辞書的な意味は他の人に任せます。
前提
今書いていて思いましたが、INNER JOINで使う時のものを想定してます。
なのでINNER JOINとか外部キー、結合は知っている前提で話を進めます。
この前 INNER JOIN で (SELECT なんとか ) ON みたいな構文見て発狂したので。
お風呂入ってて、あ、そういうことね、と腑に落ちて
それをお披露目しようという感じです。
イメージ
今、A, B ,C の3つのテーブルがあります。
そいつらには外部キーがあって、それぞれ結合しうるとします。

この窪んでいるところをそれぞれがっちゃんこしたのが俗にいう内部結合です。
隙間空いてるとかは言わないでください。作るの大変だったんだから。
この元のやつをそのままに外部キーだけで単純に結合するというのがこのイメージです。

で本題はここからでサブクエリというのを使うとどうなるかというと。

元のやつを少し加工する感じですかね。少しスリムになった感じ。
でも肝心の結合に必要なところはちゃんと残してるから、結合自体はできちゃう。みたいな。

終わりに
とにかく伝えたかったのは絵で描いてみたら意外とわかるよ
ということです。
本当はあの窪みがサブクエリ内で条件絞った結果で減るかもしれないし
そもそも内部結合はどっちにもあるものをkeyにしてくっつけるから、
条件絞ってくっつける側(今回はオレンジの方)が小さくなればくっつけられる側(A)も小さくなります。
SQLが複雑になってくるとパズルみたいで頭の中で全部やろうとするとパンクするので
絵に書いてみるとわかりやすいかもっす
では。