2

私はいくつかの製品のテーブルを持っています。それぞれに価格があります。ユーザーが自分のバスケットを見たときに、選択したすべての商品の合計金額を表示したいと考えています。

私の質問は次のとおりです。SQL経由でそれを行うことは可能ですか、それともPHPでリクエストした後にそれを行う必要がありますか?

実際、私のリクエストは次のとおりです。

SELECT SUM(PRICE) FROM products WHERE ID IN(65,68,68);

そして、2 つの 68 を考慮に入れたいと思います。

ありがとう、フロリアン

4

3 に答える 3

5

したがって、理想的には、この場合は使用しないでしょうIN(実際、そのように機能させることはできません)。必要なのは、cart_productsテーブル(または同様のもの)への参加です。

SELECT SUM(PRICE) 
FROM 
  cart_products
  JOIN products ON products.id = cart_products.product_id
WHERE 
  cart_products.cart_id = ?

次に、現在のセッションのcart_idを渡します。

カートに数量オプションがある場合は、これをSUM式として使用できることに注意してください。

SUM(products.PRICE * cart_products.qty)
于 2012-08-29T16:49:50.737 に答える
0

SQL を動的に生成できるため、最終的には次のようになります。

SELECT SUM(PRICE)
FROM
(
    SELECT PRICE FROM products WHERE id = 65
    UNION ALL
    SELECT PRICE FROM products WHERE id = 68
    UNION ALL
    SELECT PRICE FROM products WHERE id = 68
) x

しかし、本当にポイントがあるのだろうか。おそらく、すでにページに単価が表示されているので、すでにあるものから追加するだけでよいのではないでしょうか?

于 2012-08-29T16:51:45.160 に答える
0

一時テーブルにすべてのアイテムをバスケットに挿入し、それを結合して製品を取得する方法だと思います。したがって、積が 3 回ある場合、それは 3 回挿入され、結合は 3 回になるため、合計すると正しいインポートが得られます。

これは、すべての Id をパラメーターとして渡す場合です。PHP

MySQL構文についてはわかりませんが、これでうまくいくはずです

CREATE TEMPORARY TABLE BasketProducts(Id INT UNSIGNED NOT NULL)

Insert into BasketProducts values (--Insert everyId)

次に、結合を行います

Select sum(P.price) from Products P
inner join BasketProducts  BP on P.Id = BP.Id
于 2012-08-29T16:53:20.057 に答える