Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql按分组后求和_Php_Mysql - Fatal编程技术网

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。请将此答案或任何其他答案标记为已接受,如果它有助于您解决问题。