0

构建购物车应用程序。有些产品有选择,有些没有。如果该产品确实有选项,我的访客可以购买带有或不带有关联选项的产品。

我有以下 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

如果购物车中的所有产品都具有关联的 tblshopping_cart.product_option's 存在于 tblproduct_options 表中,则此方法有效。如果产品没有有效的选项,它只会返回那些有的选项。

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

如果该行具有有效的 option_product_id,我需要做的是拉入选项信息(文本和附加费用)。

4

2 回答 2

2

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

它看起来像这样:

LEFT JOIN tblproduct_options 
ON tblshopping_cart.product_option = tblproduct_options.option_product_id
于 2012-07-20T20:12:12.410 回答
2

而不是对 tblproduct_options 执行 INNER JOIN 您应该执行 LEFT OUTER JOIN 以便您获得带有和不带有关联选项的产品。

于 2012-07-20T20:12:19.147 回答