地域 ID 収入
東京 1 100
東京 2 50
東京 3 50
東京 4 60
大阪 1 120
大阪 2 80
大阪 3 20
札幌 1 90
札幌 2 70
札幌 3 60
札幌 4 50
ACCESSのサブクエリにについて教えてください。
in(select 地域 from テーブル1 where 収入>=100)
この条件で、IDの1が、100以上を追加したいのです。
検索結果が、
東京 1 100
東京 2 50
東京 3 50
東京 4 60
大阪 1 120
大阪 2 80
大阪 3 20
こんな結果にしたいのですが、どのように記載したらいいのでしょうか?
お手数ですが、ご教示してください。
よろしくお願いします。
下記のようなことでしょうか。
ありがとうございます。できました。
また、利用方法がわからず、別のところに書き込んでしまいました。申し訳ありません。
このSQL文に条件を追加したいのですが、
IDの2の収入が、60以上のときですが、下記にすると、何も表示されません。
In (select 地域 from テーブル1 where (ID=1 and 収入>=100) and (ID=2 and 収入>=60))
クエリのグリットに
In (select 地域 from テーブル1 where (ID=1 and 収入>=100))
In (select 地域 from テーブル1 where (ID=2 and 収入>=60))
一行加えると全部表示されます。
大阪 1 120
大阪 2 80
大阪 3 20
このような結果を抽出するにはどのように記載するのでしょうか?
お手数ですが、重ねて、ご教示をお願いします。
間の and を or に変更してください。
回答ありがとうございます。
IDが1で収入が100以上、かつ、IDが2で、収入が60以上と書きたいのです。
このSQL文ですと、全データが表示されます。
本当にお手数ですけど、ご教示おねがいします。
通常、抽出は単一のレコードに対してそれが持つ各フィールドの値を条件にするものですよね
IDが1かつIDが2なんてレコードは存在しないので質問の内容を実現するのはめちゃめちゃ面倒です
ACCESSならDLOOKUPで[地域]が両方とも見つかる(NULLが1つもない)で出せば簡単に組めますが速度的な問題が起きそうな気もします
面倒なことをしようとしてるので、なぜそれをしたいかがあれば適切な答えも出ると思います
回答ありがとうございあます。
地域⇒グループ
ID(社員ID) 1(社員番号)
収入⇒収入(そのまま)
社員ID 1 (社歴が一番長い人) の収入が、100万円以上 かつ 社員ID 2(社歴が二番目に長い人)の収入が、60万円以上の地域を抽出したいのです。
大阪 1 120
大阪 2 80
大阪 3 20
そうすると、上のようになるはずなのです。
これは、サブクエリでは、できないのでしょうか?
出来ます。
ですが、、、提示いただいた表が
履歴を管理しているテーブルのデータだとしたら
{ 地域 + ID } で行がユニーク( 固有の値 )にならない
という可能性すらありますから
次回からは、情報を小出しにせず
主キーや インデックス、データ型 についての情報も含め、
要件を丁寧に説明なさることをおすすめします。
■ { 地域 + ID } で行がユニークになる場合
■ { 地域 + ID } で行がユニークにならない場合
ありがとうございました。できました。
無礼を承知でもう一度質問します。
SELECT * FROM テーブル1
WHERE 地域 IN
(
SELECT 地域 FROM テーブル1
WHERE ( ID = 1 And 収入 >= 100 )
OR ( ID = 2 And 収入 >= 60 )
GROUP BY 地域
HAVING Count(1) = 2
);
このSQL文に再度条件を加える場合です。
SELECT * FROM テーブル1
WHERE 地域 IN
(
SELECT 地域 FROM テーブル1
WHERE ( ID = 1 And 収入 >= 100 )
OR ( ID = 2 And 収入 >= 60 )
OR ( ID = 3 And 収入 >= 20 )
GROUP BY 地域
HAVING Count(1) = 2
);
この用にすると動くだろうと安直に思ってましたが、構文エラーになります。
単純に条件を重ねても動かないのはわかりました。
もう一度、ご教示お願いします。
地域⇒文字型
ID、収入⇒数値型
主キーは、別にあります。18桁の文字列です
よろしくお願いしあます。
SQL文中で使用する空白は
全角スペースを混在させず、全て半角スペースで統一して下さい。
また、WHERE句の条件を3つにした場合は
地域毎に抽出されたデータの行数 が 3 になっているかを
チェックする必要がありますから
HAVING句の絞り込み条件を Count(1) = 3 に変更しましょう。
mayu様
できました。
本当に感謝申し上げます。
本当にありがとうございました。
mayu様
できました。
本当に感謝申し上げます。
本当にありがとうございました。