2012-07-20 143 views
0

構建購物車應用程序。有些產品有選擇,有些則沒有。如果該產品有選項,我訪問者可以購買帶或不帶相關選項的產品。SQL語句中的IF/THEN邏輯

我有以下JOIN語句拉所有的相關數據爲購物車輸出:

SELECT tblshopping_cart.cart_id, 
     tblshopping_cart.session_id, 
     tblshopping_cart.product_id, 
     tblshopping_cart.product_qty, 
     tblshopping_cart.product_option, 
     tblproducts.product_title, 
     tblproducts.product_price, 
     tblproducts.product_sale_price_status, 
     tblproducts.product_sale_price, 
     tblproduct_options.option_text, 
     tblproduct_options.option_upcharge 
FROM tblshopping_cart 
INNER JOIN tblproducts ON tblshopping_cart.product_id = tblproducts.product_id 
INNER JOIN tblproduct_options 
     ON tblshopping_cart.product_option = tblproduct_options.option_product_id 
WHERE tblshopping_cart.session_id = '$session_id' 
ORDER BY tblshopping_cart.product_qty ASC 

它的工作原理,如果所有的產品在購物車中都有其自身的存在於tblproduct_options表tblshopping_cart.product_option的。如果產品沒有有效的選項,它只會返回那些有效的選項。

默認情況下,沒有選項添加的任何產品都將被添加到購物車,並且product_option值的值爲「0」。如果網站用戶確實選擇了一個選項,則會添加選項值。

我需要做的是拉入選項信息(文本和upcharge),如果該行有一個有效的option_product_id。

我希望這是有道理的,並感謝您的幫助。

佈雷特

回答

2

您應該使用LEFT JOIN如果你不想你需要記錄集必須product_option的關係。

它應該是這樣的:

LEFT JOIN tblproduct_options 
ON tblshopping_cart.product_option = tblproduct_options.option_product_id 
+0

你們兩個都是對的 - 我希望我可以檢查兩個說謝謝! – Brett 2012-07-20 21:09:25

2

而不是做一個INNER JOIN對tblproduct_options你應該做一個LEFT OUTER JOIN的,讓你得到這兩種產品具有和不相關的選項。