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ランキング
-
FindFirst複数条件
-
データベースの変換
-
希望の位置へフィールドを追加...
-
構文エラー:演算子がありませ...
-
DB2のログインについて
-
CSEでDB接続しようとすると...
-
【パフォーマンス】ファイル読...
-
oo4oの読み方・・・・。
-
ODBC経由の処理が遅い
-
データベースの最適化をマクロ...
-
MS-Accessのエクスポートで異常...
-
アプローチからアクセスへデー...
-
クエリをキャンセルしたいので...
-
ODBC接続とDBLINK
-
OpenOfficeでaccessが開けない
-
AndroidからのAccessデータベー...
-
daoのrecordcountで件数が取れ...
-
オラクルのLONG RAW型のテーブ...
-
バッファプールって?
-
Windows7でOffice97は...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
希望の位置へフィールドを追加...
-
UNION ALLのように順番がありNU...
-
accessのvbaでの実行時エラーに...
-
FindFirst複数条件
-
列名が無効です
-
whileが上手く回らず困っています
-
Berkeley DB 1.85 -> GNU dbm ...
-
エクセルからアクセスにADO...
-
三枝夕夏って?
-
データベースの変換
-
Access 余分な件数分データ削除...
-
DAOでのコードをADOへ書き直し
-
パススルークエリの使い方について
-
型 varchar から型 numeric へ...
-
データベースの最適化をマクロ...
-
accessの勉強ができるサイトは?
-
構文エラー:演算子がありませ...
-
CDの売上枚数を知りたいのですが
-
クエリをキャンセルしたいので...
-
データベースの選定について 要...
おすすめ情報