0

そのため、多数の AND ステートメントでグループ化された膨大な量のオプションの入力パラメーターに基づいて、テーブルで検索を行うことになっている postgreSQL 関数を作成しました。ただし、これは次のとおりです。

AND
(
 (newcheck IS NULL) 
    OR
    ( 
    newcheck IS NOT NULL AND product.id IN(
    CASE WHEN newcheck='New' 
        THEN
        (SELECT product.id FROM product WHERE product.anew IS true)
    ELSE
        (SELECT product.id from product WHERE product.anew IS false)
    END)
    )
)

私に与える

ERROR:  more than one row returned by a subquery used as an expression

複数の行を返すようにしたいので、これはあまり役に立ちません。newcheck 変数の値は Web フォームのドロップダウン メニューから送信されるため、「New」または「Old」のみを指定できます。この問題の原因について何か考えはありますか?

4

1 に答える 1

1

次のようなものを試してください:

AND ((newcheck IS NULL)
     OR (newcheck IS NOT NULL 
         AND product.id IN (SELECT product.id 
                            FROM product 
                            WHERE product.anew = CASE WHEN newcheck='New' 
                                                      THEN true 
                                                      ELSE false
                                                 END))
于 2013-08-08T08:35:52.357 に答える