SQL初心者です。ACCESSデータベースに対するクエリを書いているのですが、
条件を配列として、その配列の順番に応じたSELECT文を書きたいのです。
SELECT * FROM access_db WHERE ID = '条件' UNION ALL
SELECT * FROM access_db WHERE ID = '条件' UNION ALL
SELECT * FROM access_db WHERE ID = '条件' UNION ALL...
といった具合にSQL文を作成しているのですが、これでは見つからない条件がある場合に、行が繰り上がり条件を格納した配列とはずれが生じてしまいます。
見つからなかった場合にNULLまたはそれを表せる何かを抽出結果として組み込むことはできますか?
SQL初心者のためUNION ALL程度しか近いものが見つけられなく、困っています。
どなたかよろしくお願いします。
No.2ベストアンサー
- 回答日時:
条件だけを格納したテーブルを作り、これと LEFT JOIN するのが、
スッキリした方法です。但し、そのような方法がとれない場合は
チョット強引なやり方ですが、以下をお試しください。
SELECT B.* FROM (SELECT TOP 1 '条件1' AS C FROM access_db) AS A
LEFT JOIN access_db AS B ON A.C = B.ID UNION ALL
SELECT B.* FROM (SELECT TOP 1 '条件2' AS C FROM access_db) AS A
LEFT JOIN access_db AS B ON A.C = B.ID UNION ALL
・・・
"条件だけを格納したテーブルを作り、これと LEFT JOIN するのが、
スッキリした方法です。"
という、文面からヒントを得て、こちらで解決致しました。
ちょっと質問とは違う出力結果になりましたが、
以前考えていたものより、効率的な結果が得られました。
配列にズレが生じないように、
keyとなるものを同時に抽出するという方法で対処しました。
ありがとうございました。
No.1
- 回答日時:
UNION ALLではなくORやINを使用されてはどうでしょうか?
SELECT * FROM access_db
WHERE ID = '条件1'
OR ID = '条件2'
OR ID = '条件3'
OR ID = '条件4'
////////////
SELECT * FROM access_db
WHERE ID IN ('条件1','条件2','条件3','条件4')
この回答への補足
この時に焦っていたため、質問の意図が判りにくいかもしれません。
申し訳ありません。
この場を借りて、質問の補足をさせていただきます。
私が実現したいのは、UNION ALL で結合された条件付SELECT文に対し、
その条件に一致するものがなければNullの結果フィールドを返すといったものです。
つまり、条件1、条件2、条件3、、、といった条件を格納した
配列があるとして、それに対し
条件1で抽出された値、条件2で抽出された値、条件3で抽出された値、、、
といったように"ずれ"のない結果が欲しいのです。
UNION ALL で見つかったものを順番に返すといった結果は得られたのですが、
見つからなかった場合にそのことを教えてもらう方法がわからないため、
条件が20あった場合に結果が18しかないということになってしまいます。
Nullを返すというのが無理ならば、"about no match"といった文でも良いのですが・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- PHP PHP MySql ページング 2 2022/09/20 06:38
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Oracle SQL update方法 2 2022/06/22 14:07
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
多値従属
-
accessのvbaでの実行時エラーに...
-
列名が無効です
-
Thunderbirdのインポートの処理...
-
キャッシュとバッファの違いは?
-
DB2 UDBって?
-
ACCESS2019でのエラーメッセージ
-
型 varchar から型 numeric へ...
-
ACCESSで条件付き書式の設定方法
-
AndroidからのAccessデータベー...
-
Accessのレポートで「縦書き」...
-
データベースの2GBって・・・?
-
ODBC経由の処理が遅い
-
エクセルのフォームについて(...
-
データベースに接続したままの...
-
CDの売上枚数を知りたいのですが
-
データベースのウェブでの自作
-
データベースソフトのTCARDにつ...
-
データベースの最適化をマクロ...
-
accessの勉強ができるサイトは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
希望の位置へフィールドを追加...
-
accessのvbaでの実行時エラーに...
-
FindFirst複数条件
-
[ACCESS/VBA]動的にSQL文を...
-
Access2000のVBAでコンパイルエ...
-
エクセルからアクセスにADO...
-
Access 余分な件数分データ削除...
-
ISBN検索システムの利用について
-
Accessでメッセージを表示しき...
-
DAO フィルターをかけたい エ...
-
データベースの変換
-
VBAのfor next で繰り返しが出...
-
型 varchar から型 numeric へ...
-
VB.netのADOってなんですか?
-
AndroidからのAccessデータベー...
-
データベースの最適化をマクロ...
-
データベースの2GBって・・・?
-
リスト形式の表とデータベース...
-
汎用カード型のデータベースソ...
-
構文エラー:演算子がありませ...
おすすめ情報