JOIN ってなに?

SQL テスト Lv2 の壁(?)である join について、内部結合の感覚だけでも掴んでほしいという資料
(外部結合やクロス結合とかもあるけど、いったんよく見る内部結合でJOINと仲良くなろう)
平井はこんな感覚で覚えたというだけで、もしかしたら人によってもっと良い覚え方があるのかも。参考にどうぞ!
 
 
ここまでは Lv1 合格できたひとには書けるはず!
 
 
↑ がスッと出来るひとは内部結合について理解していそうなのでこれ以降読まなくてもいいかも
 
 
ここから、JOIN(内部結合)で何が起こっているか、かんたんな架空のテーブルを用いた例で説明します
 
 
↓ SQL では、上記のような JOIN をこのように書きます
 
 
ON で繋げる「共通のKey」とは「同じ内容」しか利用できません!たいていの場合、ユーザIDや商品IDなど、一意に割り振られている ID がよく使われてるかも。
 
 
posts テーブルには、「誰が」「何の投稿をした」という情報があり、
post_products テーブルには、「どの投稿が」「どの商品を紹介した」という情報があります。
どうすれば、「誰が」「どの投稿をして」「どの商品を紹介した」という情報を得て、
KATE公式アカウントがリップモンスターを紹介した投稿IDを得ることができるでしょうか?
 
回答例
※ 読まなくてもいいかもしれないオマケ
Redshift で post_products 関連のクエリを書くとき、post_products の情報が更新された際、古いものが消えずに新しいものが増えてしまうという仕様のため、distinct をつけています。
(product_id ごとに post_products の生データ覗いてみると雰囲気がわかる)
(mysql で書く場合は気にしなくて大丈夫かも)