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文でエラーにならないようにしたいのですが、可能でしょうか?
最初のクエリで NULL を除外しておけばよいのではないでしょうか。
SELECT DISTINCT ID FROM TABLE WHERE ID IS NOT NULL
最初のクエリで NULL を除外しておけばよいのではないでしょうか。
SELECT DISTINCT ID FROM TABLE WHERE ID IS NOT NULL
いや、実はIDがNULLのもヒットさせたかったりします。それができるかなと思いまして・・・
データベースの種類と(使用しているのであれば)使用している言語で状況は変わってくるのですが、
とりあえず、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,'')
みたいな感じで。
ご回答ありがとうございます!
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)
で行けるのでは
ご回答ありがとうございます!
いや、実はIDがNULLのもヒットさせたかったりします。それができるかなと思いまして・・・