0

私のコードはこのようになります。

SELECT ALL TBL_MONITOR.ITEM_ID, TBL_MONITOR.CATEGORY, 
TBL_MONITOR.BRANDNAME, TBL_MONITOR.PRICE, TBL_MONITOR.QUANTITY
FROM TBL_MONITOR
where 
case when :pricetag = 'Great' then tbl_monitor.price >= :para_price end,
case when :pricetag = 'Less' then tbl_monitor.price >= :para_price end

この部分は機能しません、それは言います..キーワードがありません==>> =:para_price end

==> >= :para_price end,

私がやりたいのは、ユーザーが「より大きい」と入力した場合、レポートに「:para_price」よりも高い価格が表示される場合、これをどのように修正しますか?よろしくお願いします:)

4

4 に答える 4

4

これを試してみてください

WHERE 
(:pricetag = 'Great' AND tbl_monitor.price >= :para_price)
OR
(:pricetag = 'Less' AND tbl_monitor.price <= :para_price)
于 2011-08-05T09:39:35.897 に答える
3

SQLCASEステートメント(作成している構文エラーは別として)は、CやPHPのようなフロー制御命令ではありません。これは値を返す式であり、コードのどの部分を実行するかを決定する方法ではありません。

何を達成しようとしているのか、どのように失敗しているのかを気にせずに、簡単な表現が必要なようです。

WHERE (:pricetag = 'Great' AND tbl_monitor.price >= :para_price)
OR (:pricetag = 'Less' AND tbl_monitor.price <= :para_price)
于 2011-08-05T09:39:47.690 に答える
1

このようにしてみてください:

SELECT ALL TBL_MONITOR.ITEM_ID, 
      TBL_MONITOR.CATEGORY, 
      TBL_MONITOR.BRANDNAME, 
      TBL_MONITOR.PRICE, 
      TBL_MONITOR.QUANTITY
FROM TBL_MONITOR
WHERE (:pricetag = 'Great' AND tbl_monitor.price >= :para_price)
OR (:pricetag = 'Less' AND tbl_monitor.price <= :para_price)
于 2011-08-05T09:36:52.227 に答える
0
SELECT ALL TBL_MONITOR.ITEM_ID, TBL_MONITOR.CATEGORY, 
TBL_MONITOR.BRANDNAME, TBL_MONITOR.PRICE, TBL_MONITOR.QUANTITY
FROM TBL_MONITOR
where 
1 = CASE 
      WHEN :pricetag = 'Great' 
      AND  tbl_monitor.price >= :para_price
      THEN  1
      WHEN :pricetag = 'Less' 
      AND  tbl_monitor.price <= :para_price
      THEN 1
      ELSE 0
    END
于 2011-08-05T10:07:14.243 に答える