SQL语句中的IF / THEN逻辑

时间:2012-07-20 20:07:06

标签: sql if-statement mysqli

构建购物车应用。有些产品有选择,有些则没有。如果该产品确实有选项,我可以在有或没有关联选项的情况下购买产品。

我有以下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相关联,则此方法有效。如果产品没有有效选项,则只返回那些产品。

默认情况下,任何未添加选项的产品都会添加到购物车中,其值为“0”,表示product_option值。如果站点用户确实选择了一个选项,则会添加选项值。

如果该行具有有效的option_product_id,我需要提取选项信息(文本和上传)。

我希望这有意义并感谢你的帮助。

布雷特

2 个答案:

答案 0 :(得分:2)

如果您不想要求您的记录集与LEFT JOIN建立关系,则应使用product_option

看起来像这样:

LEFT JOIN tblproduct_options 
ON tblshopping_cart.product_option = tblproduct_options.option_product_id

答案 1 :(得分:2)

除了对tblproduct_options进行INNER JOIN之外,你应该进行LEFT OUTER JOIN,这样你就可以得到带有和没有相关选项的产品。