SQLでJOINを使いこなす
という目標を立てて15分間だけ頑張りました。(´ω`)
複数のテーブルを跨いで情報をもたせているものがある場合にフレームワークのmodelのような仕組みのない場合にJOINを使って1度のSQLで目的の情報を取得したい状況を想定します。
tableの構成
- tableA
- column (id, name, group_name)
- tableB
- column (id, A_id, disable)
やりたいこと
名前を元にtableAのグループ名とtableBの詳細を取り出したい!!
(ちょっと考えるのが面倒だったので需要があれば書き換えます!テキトー魂!)
「でもSQLは1回しか叩きたくない!!」
SQLのコード
SELECT A.id, A.name, A.group_name, B.disable
FROM tableA AS A
LEFT JOIN tableB AS B
ON A.id = B.A_id
WHERE A.name = ?;
「?」に値を入れる!!
説明
しれっと使った「エイリアス」→別名
FROM tableA AS A
ってなんだよ!
って思ったら「sql エイリアス」で調べて見てください。
ざっくり言えばtableAって長いからお前の名前はAな!!ってことです。
LEFT JOIN
// 抜粋
FROM tableA AS A
LEFT JOIN tableB AS B
LEFT JOIN
は左のテーブルを親にして右のテーブルを連結するよ~てやつ!
ON ほげほげ~
// 抜粋
ON A.id = B.A_id
ON
はJOIN
したテーブル同士のどのカラムが対応しているものを検索するかって時に使います!
まとめ
「JOINは怖くないよ!コードは友達!!」
さて、あんまり遊んでると怒られちゃうのでこのへんで失礼します!