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

カート内のすべての商品に、tblproduct_optionsテーブルに存在するtblshopping_cart.product_optionが関連付けられている場合に機能します。製品に有効なオプションがない場合は、有効なオプションのみが返されます。

デフォルトでは、オプションなしで追加された商品は、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に対してINNERJOINを実行する代わりに、LEFT OUTER JOINを実行して、関連するオプションがある場合とない場合の両方の製品を取得する必要があります。

于 2012-07-20T20:12:19.147 に答える