whereステートメントを別のselectステートメントで照会で使用することは可能ですか?たとえば:whereステートメントにselectステートメントを使用できますか?
WHERE main_section ='Supplier' AND type_of_pay ='Advance' AND
((select final_dateofpay FROM com_payments
WHERE main_section ='Supplier') IS NOT NULL)
whereステートメントを別のselectステートメントで照会で使用することは可能ですか?たとえば:whereステートメントにselectステートメントを使用できますか?
WHERE main_section ='Supplier' AND type_of_pay ='Advance' AND
((select final_dateofpay FROM com_payments
WHERE main_section ='Supplier') IS NOT NULL)
はあなたのwhere句あなたのコードため
(select final_dateofpay FROM com_paymentsWHERE main_section ='Supplier')
戻って複数の行にそのようなサブクエリを使用することはできません。したがって、IS NOT NULL
と直接組み合わせることはできません。 where節が行レベルで動作することを忘れないでください。
しかし、サブクエリの結果が結果になるかどうかをチェックしたいと思うと思います。その場合、あなたはこの
WHERE main_section ='Supplier' AND type_of_pay ='Advance' AND exists (select final_dateofpay FROM com_payments WHERE main_section ='Supplier')
のようにそれを使用することができますSQL標準はIN (...)
、NOT IN (...)
、EXISTS (...)
とNOT EXISTS(...)
ようなステートメントでサブクエリ式の全体のホストを可能にします。
この場合、クエリは次のようになります。
WHERE main_section ='Supplier' AND type_of_pay ='Advance' AND
EXISTS (select final_dateofpay FROM com_payments
WHERE main_section ='Supplier'))
このクエリの効果は1がないのでmain_section 'Supplier'
または全てオリジナルの行で任意のcom_payments
が存在しないので、もしどちらかが行を取得していないということだろう存在する。
この奇妙な結果の理由は、サブクエリに含まれるselect
ステートメントのフィールドを参照していないためです。メインクエリを参照するサブクエリwhere
にフィルタを追加すると、おそらく目的とする結果が得られます。
試しましたか?残りのクエリを表示できますか? JOINは、サブ選択するほど関連性があります。 –
うん。それはうまくいくはずです。 – Erik
少し奇妙に見えます。あなたは何をしようとしているのですか?代わりに 'EXISTS'を見てください。 – jarlh