构建购物车应用。有些产品有选择,有些则没有。如果该产品确实有选项,我可以在有或没有关联选项的情况下购买产品。
我有以下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,我需要提取选项信息(文本和上传)。
我希望这有意义并感谢你的帮助。
布雷特
答案 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,这样你就可以得到带有和没有相关选项的产品。