Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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 MYSQLI Query sum列复制行上的值_Php_Mysql_Sql_Mysqli - Fatal编程技术网

Php MYSQLI Query sum列复制行上的值

Php MYSQLI Query sum列复制行上的值,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,在带有_flag=y的ORDERS-TABLE上添加所有重复发票编号的所有列值“price” 我可以在PHP数组排序或js中实现这一点,但如果可能的话,我希望在实际的SQL查询中实现这一点 表11订单 _id | _invoice_num | _name | _price | _flag 0 123 bob 200 y 1 123

在带有_flag=y的ORDERS-TABLE上添加所有重复发票编号的所有列值
“price”

我可以在PHP数组排序或js中实现这一点,但如果可能的话,我希望在实际的SQL查询中实现这一点

表11订单

_id    |    _invoice_num    |    _name    |    _price    |    _flag

0          123                     bob           200          y
1          123                     bob           300          y
2          555                     mike          100          ...
3          123                     bob           300          y
3          888                     dave          200          y
Php:

增加:

 <?php

   $the_type = 'the_flag';

   //removes dupes 
   $sql = "SELECT * FROM orders WHERE $the_type = '' GROUP BY _invoice";

  // need to sum the dupes now.

  ?>
这应该可以:

SELECT *,
       SUM(_price) AS total
FROM   _orders
WHERE  _flag = 'y'
GROUP  BY _invoice_num  

所以只需要得到重复条目的总和?不,我仍然需要完整的行,但只需要将重复的值相加,并将重复的行显示一次作为输出:
groupby
不应该做您需要的吗?它仍将显示所有其他记录,但会合并重复记录。上面的示例已简化,但这不是我实现实际问题的方式。基本上,我希望显示所有行,但仅显示单个副本中的一行,并将所有重复项一起添加到其价格列Group by(删除重复项),然后我希望对重复项进行求和,但仍显示至少一条记录,然后正常显示其余记录。。基本上每个项目都有一个发票号,所以如果你买了两部手机,它们共享相同的发票号,因为在同一发票上有相同的发票号,但当我显示或搜索时,我不想显示每一行,而只是显示每一行的所有发票号和成本总额,只要标志='y'我在*符号后缺少逗号。。这是可行的,但我要说的是,它在行结果的末尾添加了一个额外的列,其中包含as total。这确实解决了我的问题,但不是我所期望的那样。非常感谢。
 <?php

   $the_type = 'the_flag';

   //removes dupes 
   $sql = "SELECT * FROM orders WHERE $the_type = '' GROUP BY _invoice";

  // need to sum the dupes now.

  ?>
SELECT *,
       SUM(_price) AS total
FROM   _orders
WHERE  _flag = 'y'
GROUP  BY _invoice_num