QA@IT
«回答へ戻る

回答を投稿

詳細条件が分かりませんので、条件の一部 where kyujin.area = ? だけ例にとって書きます。

「何かを選択する」とパラメータ ? に「選択」した kyujin.area の値が代入され、その条件で SELECT されるということですよね。

で、「何も選択せず」の場合はパラメータ ? には何が代入されるのでしょうか。何にせよ、SELECT の結果が 0 件ということですと、kyujin.area =「代入した値」が true になるレコードがないということのはずです。

「何も選択せず」の場合は、kyujin.area の値にかかわらず全レコードを抽出したいということだと理解していますが、であれば、

(1) 「何も選択せず」の場合は SELECT クエリの WHERE 句を書き換えて kyujin.area = ? を削除する、または、

(2) WHERE 句の条件を、例えば、WHERE ('ALL' = ?) OR (kyujin.area = ?) のように書き換えて、「何も選択せず」の場合はパラメータ ? に ALL を代入する。

・・・というようにしてはいかがでしょう?

詳細条件が分かりませんので、条件の一部 where kyujin.area = ? だけ例にとって書きます。

「何かを選択する」とパラメータ ? に「選択」した kyujin.area の値が代入され、その条件で SELECT されるということですよね。

で、「何も選択せず」の場合はパラメータ ? には何が代入されるのでしょうか。何にせよ、SELECT の結果が 0 件ということですと、kyujin.area =「代入した値」が true になるレコードがないということのはずです。

「何も選択せず」の場合は、kyujin.area の値にかかわらず全レコードを抽出したいということだと理解していますが、であれば、

(1) 「何も選択せず」の場合は SELECT クエリの WHERE 句を書き換えて kyujin.area = ? を削除する、または、

(2) WHERE 句の条件を、例えば、WHERE ('ALL' = ?) OR (kyujin.area = ?) のように書き換えて、「何も選択せず」の場合はパラメータ ? に ALL を代入する。

・・・というようにしてはいかがでしょう?