- ベストアンサー
SQLで商品の登録状況をチェックする方法
- SQL初心者の方が商品の登録状況をチェックする方法について教えてください。
- 商品マスタと価格テーブルを比較して、登録されていない商品を見つける方法を教えてください。
- 商品の登録状況をSQLを使用して確認する方法について教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
select case when count(*) > 0 then '1つでも登録されていない' else 'すべて登録済み' end 登録状況 from ( select a.SHOHIN_CODE from T_SHOHIN a where not exists ( select * from T_KAKAKU b where a.SHOHIN_CODE = b.SHOHIN_CODE and b.KIJUN_DATE = 20111104)); でどうでしょうか。
その他の回答 (3)
- o_chi_chi
- ベストアンサー率45% (131/287)
(蛇足) CASE WHEN TO_CHAR(B.KAKAKU) IS NOT NULL THEN '登録なし' ELSE TO_CHAR(B.KAKAKU) END as 登録価格 これは逆ですね。 CASE WHEN B.KAKAKU IS NOT NULL THEN TO_CHAR(B.KAKAKU) ELSE '登録なし' END as 登録価格
- o_chi_chi
- ベストアンサー率45% (131/287)
これでどうでしょう。 (オラクル環境がなく確認していません。) ---- SELECT CASE WHEN COUNT(C.NG) > 0 THEN '未入力あり' ELSE '全登録' END as 登録状況 FROM (SELECT 0 as NG FROM 商品マスタ A LEFT JOIN (SELECT 商品コード ,価格 FROM 価格テーブル WHERE 登録日 = '11/3' ) B ON A.商品コード = B.商品コード WHERE B.価格 IsNull ) C GROUP BY C.NG
お礼
返信が遅れました。 申し訳ありません。 皆様のおかげで解決できました。 ありがとうございます。 まだまだ勉強不足です。 がんばります。
- o_chi_chi
- ベストアンサー率45% (131/287)
商品マスタと価格テーブルの登録日抽出分を結合すればできます。 --- SELECT A.商品コード ,A.商品名 ,CASE WHEN B.価格 IsNull THEN '登録なし' ELSE B.価格 END as 登録価格 FROM 商品マスタ A LEFT JOIN (SELECT 商品コード ,価格 FROM 価格テーブル WHERE 登録日 = '11/3' ) B ON A.商品コード = B.商品コード
お礼
o_chi_chiさん 早速の回答ありがとうございます。 こういう方法があるのですね。 もう1つ質問させてください。 教えてもらったSQL文を実行してみたところ 「ORA-00932: データ型が一致しません: CHARが予想されましたがNUMBERです。」 となってしまいました。 型は合っていると思うのですが誤りがありますか。 何度も質問してすみません。 (実行したSQL) SELECT A.SHOHIN_CODE ,A.SHOHIN_NAME ,CASE WHEN B.KAKAKU IS NOT NULL THEN '登録なし' ELSE B.KAKAKU END as 登録価格 FROM T_SHOHIN A LEFT JOIN (SELECT SHOHIN_CODE ,KAKAKU FROM T_KAKAKU WHERE KIJUN_DATE = 20111104 ) B ON A.SHOHIN_CODE = B.SHOHIN_CODE KAKAKU:NUMBER型 KIJUN_DATE:NUMBER型 SHOHIN_CODE:VARCHAR2型 SHOHIN_NAME:VARCHAR2型
補足
補足です 以下の部分を CASE WHEN B.KAKAKU IS NOT NULL THEN '登録なし' ELSE B.KAKAKU END as 登録価格 CASE WHEN TO_CHAR(B.KAKAKU) IS NOT NULL THEN '登録なし' ELSE TO_CHAR(B.KAKAKU) END as 登録価格 としたらできました。 結果マスタレコード分抽出されました。 実際には、個別の結果ではなく全体として 「すべて登録済みか、1つでも登録されていないか」 ということを知りたいのです。 質問内容が良くなかったです。 すみません。
お礼
このようなやりかたがあるんですね どうしてそう書くのかを調べました。 どこから評価されるのか疑問でした。 勉強になりました。 ありがとうございます。