Php mysql按分组后求和
购物车表:Php mysql按分组后求和,php,mysql,Php,Mysql,购物车表: itemid | amount ------ | ------ 1 | 2 2 | 4 产品表: itemid | Price ------ | ------ 1 | 10 2 | 20 到目前为止,我所尝试的: $cartPrice = "SELECT (SUM(products.Price) * SUM(cart.amount)) AS total_price FROM cart INNER JOIN products O
itemid | amount
------ | ------
1 | 2
2 | 4
产品表:
itemid | Price
------ | ------
1 | 10
2 | 20
到目前为止,我所尝试的:
$cartPrice =
"SELECT (SUM(products.Price) * SUM(cart.amount))
AS total_price
FROM cart
INNER JOIN products
ON cart.itemid = products.itemid
WHERE userid = '$IP'
GROUP BY cart.itemid";
$Price = $mysqli->query($cartPrice);
$rowPrice = $Price->fetch_assoc();
echo "Total: ". $rowPrice['total_price'] ." ";
My MYSQL查询输出以下内容:
total_price |
----------- |
20 |
80 |
它将响应最后的结果。但我需要80+20的总数。我该怎么做
我目前得到的结果是:
Total: 80
我想要的结果是:
Total: 100
谢谢您可以对子查询的结果进行求和,如下所示:
SELECT SUM(total_price) as total_price FROM
(
SELECT (SUM(products.Price) * SUM(cart.amount)) AS total_price
FROM cart
INNER JOIN products
ON cart.itemid = products.itemid
WHERE userid = '$IP'
GROUP BY cart.itemid
) total_prices
您不必按分组,因为您只希望返回一行:
选择总和(产品.价格*购物车.金额)作为总价
从购物车
内接积
ON cart.itemid=products.itemid
其中userid='$IP'
一种简单的方法是使用带有第二次选择的union,而不使用group by
" SELECT (SUM(products.Price) * SUM(cart.amount)) AS total_price
FROM cart
INNER JOIN products
ON cart.itemid = products.itemid
WHERE userid = '$IP'
GROUP BY cart.itemid
UNION
SELECT (SUM(products.Price) * SUM(cart.amount))
FROM cart
INNER JOIN products
ON cart.itemid = products.itemid
WHERE userid = '$IP' ";
第一个选择返回主要行,第二个返回最终总数您很快,感谢您的解决方案!这对我来说很有效,没问题。看看@GiorgosBetsos解决方案,对你来说应该更好。是的,但他的解决方案会运行得更快。但是请记住,您可以总结子选择。虽然我用您的方法得到了相同的结果,但我仍然要感谢您的帮助。Giorgos Betsos有解决方案。你很快,谢谢你的解决方案!“这对我来说很好。”尼尔斯很高兴我能帮助并欢迎Stack Overflow。请将此答案或任何其他答案标记为已接受,如果它有助于您解决问题。