2012-09-11 45 views
0

我有以下代碼最大查詢內設置

$this->db->query("UPDATE customer_product_owned 
    SET quantity = (max(0, (quantity - " . (int)$order_product_upgrade['quantity'] . "))) 
    WHERE customer_id = '" . (int)$order_info['customer_id'] . "'"); 

我想PHP變量以從數量字段的值中減去。但是,如果值小於0,我希望該值爲0.

我在這裏做錯了什麼?最多可以在'set'中使用嗎?我可以事先做一個額外的查詢,首先找出數量的價值,但有沒有辦法在同一個查詢中做到這一點?

+0

爲什麼'',而不是僅僅'數量=數量 - 「。(int)$ order_product_upgrade ['quantity']。」' – dbf

+0

@dbf:「但是,如果值小於0,我希望該值爲0。 @zerkms啊只是看了看; – zerkms

+0

); – dbf

回答

1
  1. MAX是一個聚合函數。您需要GREATEST(0, ...)
  2. 不要用引號括起數字。只要指定它們原樣,如:( - 「(INT)$ order_product_upgrade [ '量']」 MAX(0,(數量)))

    WHERE customer_id = " . (int)$order_info['customer_id']