ここから本文です

select 商品ID,商品名 from 商品マスタ where 商品ID in (select 商品ID from ...

huk********さん

2018/7/1713:44:11

select 商品ID,商品名
from 商品マスタ
where 商品ID in (select 商品ID
from 売上データ
where 処理日 >= #2018/5/1# and 処理日 < #2018/6/1#)
and 商品ID

not in (select 商品ID
from 売上データ
where 処理日 >= #2018/6/1# and 処理日 < #2018/7/1#);

このSQLのサブクエリを1つにする方法を教えてください。

補足この内容で提出したところ、先生にサブクエリを1つにしろと言われました。
先生にやり方を聞こうとしたのですが、前の課題の質問が終わってからと言われたので質問しました。

閲覧数:
86
回答数:
5
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

nora1962jpさん

2018/7/1800:03:32

そうですねえ。
まず、使っているのはMS ACCESSなのかMySQLなのか教えてください。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜4件/4件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

ony********さん

2018/7/1813:39:57

サブクエリを1つにしろという課題文章を先に見せた方が良いですね。
答えがそれっぽくても、課題から外れていれば、×は当たり前なので。

m3_maki0さん

2018/7/1717:01:19

課題の文章が正確に書かれていれば
先生がどんな解答を望んでいるか分かるかもしれませんが。

とりあえず、サブクエリは1つだけです。

SELECT DISTINCT 商品マスタ.商品ID, 商品マスタ.商品名
FROM 商品マスタ
INNER JOIN 売上データ ON 商品マスタ.商品ID = 売上データ.商品ID
WHERE
(商品マスタ.商品ID Not In
(select 商品ID from 売上データ
where 処理日 >= #2018/6/1# and 処理日 < #2018/7/1#))
AND
(処理日>#5/1/2018# And 処理日<#6/1/2018#)

Access2010使用。

iru********さん

2018/7/1716:59:17

SELECT 商品ID, 商品名
FROM 商品マスタ
WHERE 商品ID IN(
SELECT 商品ID FROM 売上データ
GROUP BY 商品ID
HAVING COUNT(IIF(処理日 >= #2018/5/1# and 処理日 < #2018/6/1#,1,NULL))>0
AND COUNT(IIF(処理日 >= #2018/6/1# and 処理日 < #2018/7/1#,1,NULL))=0
);

MySQL の場合は、IIF関数の代わりに CASE 式にしてください。

fan********さん

2018/7/1716:06:50

このSQLのサブクエリは、1つにはできません。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる