2014年6月18日水曜日

SQLのJOINで結合するときのレコードを絞りたい

片方のテーブルのレコードをすべて表示して、もう片方の結合するテーブルのレコードは
ある条件に一致するレコードに絞り込みたいという状況が必要になりました。

カテゴリのレコードはすべて必要だけどカテゴリに属するアイテムを結合するときのレコードは
アイテムの価格がXX以上だけのようなときです。
// カテゴリに属するアイテムを結合
select * from category left join item on category.id=item.category_id

// カテゴリに属するアイテムで価格が1000より大きいレコードだけを結合
select * from category left join item on category.id=item.category_id and item.price>1000
方法を見つけるのにも時間が掛かったので、同じようなことにならないようメモ。