• ベストアンサー

SQL おしえてくんさい

◆item_tbl item_id | shop_id ◆shop_tbl shop_id | status_flag (1:通常 2:潰れた) といったテーブルがあった場合に、item_tbl.shop_id はNULLの場合もある(店舗と紐づいていない場合もある)とします。 潰れた店舗の商品以外、つまりは「潰れてない店舗の商品」と「店舗と紐づいていない商品」のitem_idを取得したい場合のSQLを教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (766/5720)
回答No.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

muuming2001
質問者

お礼

ありがとうございます。 left joinした結果の値もwhere句で使えるんですね。あざす。

その他の回答 (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 );

muuming2001
質問者

お礼

ありがとうございます。left join使うのが普通かなぁとか思っちゃったり。

関連するQ&A