人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

レコードセットが2つあります。レコードセット1とレコードセット2です。RS1にはselect distinct ID from Tableで取得したクエリがはいっています。RS2はRS1で取得したIDを条件にくわえてselect文を投げます。
select ID, ID_NAME from TABLE where ID=RS1!IDといったSQLです。

この時、RS1でIDがないものがあったとします。つまりIDがNULLのものです。
select ID,ID_NAME from TABLE where ID=NULLになった場合、正しくデータを取得できません。ID_NAMEには値があるのに、IDには値がないといったケースです。この時もSQL文でエラーにならないようにしたいのですが、可能でしょうか?

●質問者: akaired
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:SELECT SQL いもの エラー クエリ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● Mook
●100ポイント ベストアンサー

最初のクエリで NULL を除外しておけばよいのではないでしょうか。

SELECT DISTINCT ID FROM TABLE WHERE ID IS NOT NULL
◎質問者からの返答

いや、実はIDがNULLのもヒットさせたかったりします。それができるかなと思いまして・・・


2 ● khazad-Lefty
●27ポイント

データベースの種類と(使用しているのであれば)使用している言語で状況は変わってくるのですが、

とりあえず、IDにNullが入っていてそれを取得したいのであれば、

プログラム側で、

select ID,ID_NAME from TABLE where ID IS NULL

に二番目のクエリーを切り替えるのが無難かと。

そうじゃなければ、OracleでいうNVL関数(AccessならNZ、SQLSERVERならIsNull関数)を使用する方法もあります。

(ただし、インデックスが使われなくなるためパフォーマンス的には落ちるはずです)

ACCESSなら

select ID,ID_NAME from TABLE where Nz(ID)=Nz(Null)

ORACLEなら

select ID,ID_NAME from TABLE where NVL(ID,'')=NVL(NULL,'')

みたいな感じで。

◎質問者からの返答

ご回答ありがとうございます!


3 ● Kenz
●26ポイント

IDがNULLの場合、どこの列と関連づけるのですか?

主キーがNULLならデータが取得できなくても当然だと思うのですが・・・

RS2でクエリをかけるテーブルのID列にNULLが1行しかないと仮定して、NULL同士で繋ぐなら

select ID, ID_NAME from TABLE where ID=RS1!ID OR (ID IS NULL AND RS1!ID IS NULL)

で行けるのでは

◎質問者からの返答

ご回答ありがとうございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ