2010-03-05 68 views
2

我正在使用MYSQL和PHP。我有一個稱爲物品的表格。它的兩個屬性是價格和折扣price.I有SELECT語句如下:SQL中的條件表達式

$sql = 
'SELECT C.cart_id,I.item_id,C.quantity, I.discounted_price,I.price 
FROM cart C, item I 
WHERE I.item_id = C.item_id'; 

我想修改該SQL語句,幷包括一個條件表達式這樣的:如果discounted_price爲0,它會選擇其他的價格,discounted_price被選中。 在SQL語句中可以使用條件表達式嗎? 謝謝! :)

回答

5

試試這個:

SELECT 
    C.cart_id, 
    I.item_id, 
    C.quantity, 
    COALESCE(I.discounted_price, I.price) AS price 
FROM 
    cart C, 
    item I 
WHERE 
    I.item_id = C.item_id 

COALESCE選擇從參數列表中的第一個非空值。即,當discount_price爲NULL時,它返回價格。

如果你的「空」值是0.00,你可以使用這個:

SELECT 
    C.cart_id, 
    I.item_id, 
    C.quantity, 
    IF(I.discounted_price > 0, I.discounted_price, I.price) AS price 
    ... 

也就是說,如果折扣價大於零,使用,否則使用正常的價格。

+0

事實上,如果一個項目沒有折扣價,該值是在我的表0.00。 0計爲空嗎? – chupinette 2010-03-05 12:15:20

+0

不,0不計爲空。 – sgmoore 2010-03-05 12:46:22

+0

非常感謝Tatu Ulmanen! :) – chupinette 2010-03-05 18:28:40

0

在SQL Server中,這將是:

SELECT C.cart_id,I.item_id,C.quantity, CASE WHEN I.discounted_price IS NULL THEN I.price ELSE I.discounted_price END AS price 
FROM cart C, item I 
WHERE I.item_id = C.item_id 

你可以給在MySQL的一個嘗試。

+0

謝謝!我會嘗試它 – chupinette 2010-03-05 12:16:06

0

喜歡的東西

SELECT C.cart_id,I.item_id,C.quantity, 
    IfNull(I.discounted_price,I.price) as Price 
FROM cart C, item I 
WHERE I.item_id = C.item_id 

使用ISNULL如果您使用MSSQL