- ベストアンサー
SQL おしえてくんさい
◆item_tbl item_id | shop_id ◆shop_tbl shop_id | status_flag (1:通常 2:潰れた) といったテーブルがあった場合に、item_tbl.shop_id はNULLの場合もある(店舗と紐づいていない場合もある)とします。 潰れた店舗の商品以外、つまりは「潰れてない店舗の商品」と「店舗と紐づいていない商品」のitem_idを取得したい場合のSQLを教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一度で両方の商品のitem_idを取得するのでしたらこのように。 SELECT item_tbl.item_id FROM item_tbl LEFT JOIN shop_tbl ON item_tbl.shop_id = shop_tbl.shop_id WHERE item_tbl.shop_id IS NULL OR shop_tbl.status_flag = 1
その他の回答 (1)
- t_hirai
- ベストアンサー率28% (222/788)
回答No.1
間違ってたらすみません。 潰れてない店舗の商品 select i.* from item_tbl as i where i.shop_id != null and shop_id in ( select shop_id from shop_tbl where status_flg = 1 ); 店舗と紐づいていない商品」のitem_idを... selet item_id from item_tbl where shop_id not in ( select shop_id from shop_tbl );
質問者
お礼
ありがとうございます。left join使うのが普通かなぁとか思っちゃったり。
お礼
ありがとうございます。 left joinした結果の値もwhere句で使えるんですね。あざす。