- 締切済み
ACCESS 抽出条件の指定に関して
抽出条件の指定で少し分からないことがあるので教えていただきたいのですが、 店コード_売上構成_商品とフィールドあります。 商品のスポーツシューズの売上構成が0又はヌル””でない場合、 そうではない店コード、売上構成比、商品名をすべて表示したのですが クエリでどのように抽出条件を指定すればよいでしょうか? ようするにスポーツシューズがない店に関しては表示せず スポーツシューズがある店のすべての商品、売上構成を表示したいということです。
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- hotosys
- ベストアンサー率67% (97/143)
ANo.3さんので答えになってますよ。 サブクエリと言うので、調べるとたくさん出てきます。 http://www.techscore.com/tech/sql/07_01.html とか。 「スポーツシューズ」の構成比が0またはnullでない店コードは SELECT 店コード FROM テーブル1 WHERE (商品="スポーツシューズ") AND (売上構成 Is Not Null) And (売上構成<>0) または SELECT 店コード FROM テーブル1 WHERE (商品="スポーツシューズ") AND (nz(売上構成)<>0) で求まるので、あとは SELECT * FROM テーブル1 とかの実際求めるクエリのWHERE条件を 店コード IN(SELECT 店コード FROM テーブル1 WHERE (商品="スポーツシューズ") AND (nz(売上構成)<>0)) にする。 例えば SELECT * FROM テーブル1 WHERE 店コード IN(SELECT 店コード FROM テーブル1 WHERE (商品="スポーツシューズ") AND (nz(売上構成)<>0)) とか。
- Dxak
- ベストアンサー率34% (510/1465)
#3です > 別フィールドでDLOOKUP系?の関数を使えばできるんですかね。 多分、やろうと思えば、可能だと思うよ 複数条件にするのは難しいから、フィールドにDLOOKUP系関数を使用する方法になるけどね #5にも記載したけど・・・少々、疑問はあるけど・・・ In ( Select 店コード From [テーブル名] Where 商品 = "スポーツシューズ" And 売上構成 > 0 ) で、行けると思うんだけどね(テーブル名は、書き換えてね) #5の懸念の通りだと「売上構成 > 0」を「売上構成 >= 0」で、行けると思うけど・・・Nullは、比較数値ではないので、気にしないでも問題は無いよ サブクエリで、「スポーツシューズの売上構成が0より大きい店コード」の一覧を作り、「In」で、その店コードを含むものを条件として抽出すると言うことね
- Dxak
- ベストアンサー率34% (510/1465)
#3です > の条件とは、一致しないと思うのですが・・・ の意図が判るかな? > スポーツシューズがある店のすべての商品、売上構成を > 表示したいということです。 の条件からすれば・・・「売上構成=取り扱い」の条件が成立しないと、抽出できないと言う話 ですので、「売上構成=0」は、単純に売れなかっただけで取り扱いをしてなかったと言う話ではないと、言う話、これが、1年の売上構成なら確率的に低いから判るけど・・・1日の売上構成なら可能性的にあると言うこと だから、「売上構成=Null」が存在して、これが取り扱いをしてないと、言うことなのでは?と、深読みしてるのですが・・・ その辺りどうだろう? 多分、売上構成を順当に考えれば、全売上の売上比100%~0%の数値が入ってると、思うのですが・・・そのあたり補足してね
ID__fld1__fld2 1___A_______10 2___B________0 fld1=C かつ fld=0 という条件に合致しないということですか・・・。 SELECT * FROM tab1 WHERE Not (fld1="C" And NZ(fld2)=0);
- Dxak
- ベストアンサー率34% (510/1465)
店コードの条件に、 In ( Select 店コード From [テーブル名] Where 商品 = "スポーツシューズ" And ~ ) と、言うのを記載すると言う話? まぁ、条件が「~」と言うのは、 > 0又はヌル””でない場合、 > そうではない店コード 否定の否定で、0またはNullの店コードと > スポーツシューズがある店のすべての商品 の条件とは、一致しないと思うのですが・・・ データの状況を具体的に表示した方が良いと思うよ
補足
店コード_売上構成_商品名 1_0_a 1_23_b 1_77_c 2_10_a 2_20_b 2_70_c ↓ 2_10_a 2_20_b 2_70_c a=スポーツシューズ 店コード1に関してはaのスポーツ売上構成が0なので抽出しません。 店コード2に関してはaに10と売上構成があるので抽出します。 内容としてはとても簡単なのですが今ひとつ分かりません。 別フィールドでDLOOKUP系?の関数を使えばできるんですかね。
- keirika
- ベストアンサー率42% (279/658)
売上構成比は Is Not Null And <>0 商品名は "スポーツシューズ" でどうでしょう。
補足
勘違いされていると思うのですが、表示したいのはすべての商品です。 それで表示されるのはスポーツシューズだけになってしまいますよね。 表示したくないのは、スポーツシューズが0のすべて店の商品です。
tab1: ID_fld1_fld2 01_A______10 02_B_______0 03_C____nill クエリ1: ID_fld1_fld2 01_A______10 SELECT * FROM tab1 WHERE Nz(fld2)<>0; Nz()を使って条件指定されたらいいです。 SELECT * FROM tab1 WHERE fld2<>0 AND fld2 IS NOT NULL; よりシンプルだと思います。
補足
補足内容はANo.2と同じです。 感じとしては 商品のスポーツシューズの売上構成が0でない店コードのみ抽出。
補足
説明が悪かったので具体例をあげました。 >In ( Select 店コード From [テーブル名] Where 商品 = "a" And 売上構成 > 0 ) 結果 店コード_売上構成_商品名 1_0_a 1_23_b 1_77_c 2_10_a 2_20_b 2_70_c ↓ 2_10_a 上記指定ではa以外の商品が表示されません。 スポーツシューズのみ表示する方法は分かるのですが、 以下の用にスポーツシューズが0の場合同じ店コードは抽出しない スポーツシューズが0でない場合同じ店コードをすべて抽出する。 この条件の指定方法が分かりません。 店コード_売上構成_商品名 1_0_a 1_23_b 1_77_c 2_10_a 2_20_b 2_70_c ↓ 2_10_a 2_20_b 2_70_c