![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
何時も大変お世話になっております。
windows7
ACCESS2007(初心者レベルです)
の環境になります。
ACCESSのシステムを作成しており、こちらでの書き込みを参考にさせて頂いた事により、一つ問題が解決したのですが、新たな問題が発生してしまいましたので、ご質問をさせて頂きます。
解決しましたsql文
SELECT T_○.URL, T_○.日, T_○.時, T_○.マシン名, T_○.ユーザ名, T_○.タイトル, T_○.IPアドレス, T_○.グループ名, T_○.ホストID, T_○.登録日時 INTO T_●1 IN 'D:\LOG\Database1.accdb'
FROM T_○, T_条件 IN 'D:\LOG\Database1.accdb'
WHERE (((T_○.URL) Like Choose([T_条件].[SP],"","*","*") & [T_条件].[FN] & Choose([T_条件].[SP],"*","*","")));
上記により大量にあります条件をテーブルから呼び出して無事に抽出が可能となりました。
そこで今回は逆のパターン(上記の抽出から外れたデータ)を別テーブルに作成したく以下のsql文を作成してみました。
SELECT T_○.URL, T_○.日, T_○.時, T_○.マシン名, T_○.ユーザ名, T_○.タイトル, T_○.IPアドレス, T_○.グループ名, T_○.ホストID, T_○.登録日時 INTO T_除外データ IN 'D:\LOG\Database1.accdb'
FROM T_○, T_条件 IN 'D:\LOG\Database1.accdb'
WHERE (((T_○.URL) Not Like Choose([T_条件].[SP],"","*","*") & [T_条件].[FN] & Choose([T_条件].[SP],"*","*","")));
結果、同じ内容のレコードが100件以上に膨れ上がりデータが莫大な物になってしまいました。
つたない文章とsql文で大変申し訳ございませんが、なぜ同じレコードが何件も出来てしまうのでしょうか?
ご指摘及びアドバイスを頂けますと幸いでございます。
No.1ベストアンサー
- 回答日時:
なんか、その方法は見覚えがありますね。
検証はしっかりやってください。
(注意事項を追加しようとしたら、閉じられてしまったのでそのままなんですけど)
参考にされたのは、以下だったでしょうか?
ACCESS クエリ 抽出条件が多い場合
http://oshiete1.goo.ne.jp/qa4719476.html
なぜ、上記に追加しようとしたのかを例示してみます。
例えば、「T_条件」が以下の内容になっているとします。
FS FN
2 A
2 B
で、Like で見る URL の内容が
URL
ACE
DEF
の2レコードだとすると、直積では
URL FS FN
ACE 2 A → ACE Like '*A*' で、抽出
ACE 2 B → ACE Like '*B*' で、抽出外
DEF 2 A → DEF Like '*A*' で、抽出外
DEF 2 B → DEF Like '*B*' で、抽出外
何を追加しようとしていたのか・・・・は、もしここで、
FS FN
2 A
2 C
だったら
URL FS FN
ACE 2 A → ACE Like '*A*' で、抽出
ACE 2 C → ACE Like '*C*' で、抽出
DEF 2 A → DEF Like '*A*' で、抽出外
DEF 2 C → DEF Like '*C*' で、抽出外
となって、ACE は2レコードとして抽出されることになります。
1レコードにするためには、
GROUP BY URL とか、DISTINCT URL 等で重複を削除する必要があります。
または、あの回答記述を
SELECT T1.FN FROM T1 WHERE
EXISTS (SELECT 1 FROM TS WHERE T1.FN Like Choose(SP,"","*","*") & FN & Choose(SP,"*","*",""));
に変更すべきと思います。なので、上記の逆は・・・・というと
SELECT T1.FN FROM T1 WHERE
NOT EXISTS (SELECT 1 FROM TS WHERE T1.FN Like Choose(SP,"","*","*") & FN & Choose(SP,"*","*",""));
の様に EXISTS の前に NOT を記述すれば良いです。
※※ この記述で、変更すべき点はわかってもらえたでしょうか
※ 冒頭にも記述しましたが、検証はしっかりやってください。
有難うございます。
貼り付けて頂きましたURLの内容を参考にさせて頂きました。
条件が100件以上あり、基データも最大500万件超える場合があり(現在はテストデータですので件数は少ないですが)PCのソフトを学ぶタイミングを作れなく本を見たりネット検索をしたりして作成しております。
件数が膨大ですので、本来はもっと別な物を使った方が良いのでしょうが、中々社内で思う様に出来ないため難儀しております。
こんなレベルの低い人間ですので、検証すべき事にも気が付きませんでした。
まだ記述頂きました内容での変更は行えておりませんが、今一度見直しながら勉強したいと思っております。
今後も質問させて頂く事があるかと思いますが、宜しくお願い申し上げます。
No.2
- 回答日時:
すごく複雑な条件抽出ですね、とても全てを読み切ることは出来ません
あくまで推測です
FROM T_○, T_条件 IN 'D:\LOG\Database1.accdb'
WHERE (((T_○.URL) Not Like Choose([T_条件].[SP],"","*","*") & [T_条件].[FN] & Choose([T_条件].[SP],"*","*","")));
------------------------------------------------------
FROM T_○, T_条件は2つのテーブルですね これでwhere以下がなければ
selectされるレコード数はそれぞれのレコード数の積になります
一方が期待通りで、一方が重複なのは Like Choose と Not Like Chooseのためです
この重複を避けるには乱暴ですがT_除外データテーブル のどれかのフィールドを重複なしに設定します。
※ このまま実行すると重複の警告が頻繁に出ます
select文の前後に DoCmd.SetWarnings False と DoCmd.SetWarnings true を入れて下さい
アドバイス有難うございます。
初心者であるせいか?(複雑=無駄がある?)なsql文になってしまっているかと思います。
お教え頂きました方法もやってみます。
今後も宜しくお願い申し上げます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Oracle SQL update方法 2 2022/06/22 14:07
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PCゲームから音声ファイルを抽...
-
ACCESSの時間帯の抽出について
-
Access テーブルを分割してエク...
-
ACCESS 「パラメータの入力」...
-
アクセス2000で、DBの0と空白以...
-
ACCESS クエリの抽出条件を動的...
-
アクセス・クエリの抽出条件(...
-
ACCESS クエリの抽出条件に他の...
-
オプションボタンを使って抽出
-
Access 誕生月データの抽出
-
Accessのクエリで、CStr関数を...
-
ACCESSのクエリで抽出条件「ま...
-
Accessで「式で型が一致しません...
-
Access 2003 iif [日付フィール...
-
access 文字列で範囲指定する
-
ACCESS クエリで”1”でないもの...
-
アクセスのクエリで困ってます。
-
クエリで不等号を含んだ条件式...
-
access クエリの抽出条件を入れ...
-
元データから連続5日以上だった...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS 「パラメータの入力」...
-
ACCESS クエリの抽出条件に他の...
-
ACCESSの時間帯の抽出について
-
ACCESSのクエリで抽出条件「ま...
-
Access テーブルを分割してエク...
-
PCゲームから音声ファイルを抽...
-
元データから連続5日以上だった...
-
アクセス・クエリの抽出条件(...
-
アクセスでの抽出方法(日付+時...
-
accessの日付フィールドから前...
-
エクセルのマクロで検索・抽出...
-
access クエリの抽出条件を入れ...
-
ACCESS クエリの抽出条件を動的...
-
最大値以外の抽出方法
-
Access 2003 iif [日付フィール...
-
ACCESS クエリで”1”でないもの...
-
Accessクエリーでチェックボッ...
-
アクセス2000で、DBの0と空白以...
-
クエリの進行状況を知りたい。
-
ExcelのVBAで、XMLファイルのデ...
おすすめ情報