Php 如何在新列中插入由另一列分组的列的和

Php 如何在新列中插入由另一列分组的列的和,php,mysql,sql,Php,Mysql,Sql,我试图将表中的两列“qty*price_dl”相乘,但新列“total1”中的值在同一个表中,这对我来说没有问题 之后,尝试获取按“seq”列分组的“total1”列和同一表中“total2”列中的值之和 我被困在求和的过程中,这对我不起作用 代码如下: <?php require_once("dbconfig.php"); $q=mysql_query('select * from sale_menu') or die(mysql_error()); echo "<table bo

我试图将表中的两列“qty*price_dl”相乘,但新列“total1”中的值在同一个表中,这对我来说没有问题

之后,尝试获取按“seq”列分组的“total1”列和同一表中“total2”列中的值之和 我被困在求和的过程中,这对我不起作用 代码如下:

<?php
require_once("dbconfig.php");
$q=mysql_query('select * from sale_menu')
or die(mysql_error());
echo "<table border='2'>
<tr>
    <th>Select</th>
    <th>qty</th>
    <th>price_dl</th>
    <th>total1</th>

</tr><tr>";
while($rw=mysql_fetch_array($q)){
    ?>
    <td><input type="checkbox" value="<?php echo $rw['seq']; ?>" name="seq[]" ></td>
    <td><b><?php echo $rw['qty']; ?></b></td>
    <td><b><?php echo $rw['price_dl']; ?></b></td>
    <td><b><?php echo $rw['total1']; ?></b></td>
    <tr>
    </tbody>
    <?php } ?>
    <?php
    error_reporting(0);
    $seq=$_POST['seq'];
    if (isset($_POST['submit']))
    {   
        $impid=implode(", ",$seq);
        $qdel=mysql_query("SELECT * FROM sale_menu WHERE seq IN(".$impid.")");
        while($row=mysql_fetch_array($qdel)){
            $qty=$row['qty'];
            $price_dl=$row['price_dl'];
            $qdel=mysql_query("UPDATE sale_menu set total1=qty*price_dl WHERE seq IN(".$impid.")");
            $qdel=mysql_query("UPDATE sale_menu set total2=sum(total1) WHERE seq IN(".$impid.")");
        }
    }
    ?>
    <button name="submit" type="submit" value="Checked" id="submit" >Move</button>

您不能将total1作为列放在这里,因为您需要在查询中进行查询,有两种方法可以做到这一点

第一个方法是这样做嵌套查询

$qdel=mysql_query("UPDATE sale_menu set total2= (select sum(total1) as total from table_name) WHERE seq IN(".$impid.")");
第二种方法更简单,只需在此查询之前进行另一个查询,并将sum(total1)的值存储在一个变量中,然后您就可以在该查询中使用该变量

$q=mysql_query('select sum(total1) as total from table_name')
while($rw=mysql_fetch_array($q)){

   $total =  $rw['total'];
 }
$qdel=mysql_query("UPDATE sale_menu set total2= $total WHERE seq IN(".$impid.")");

我希望它能为您工作

大约10年前我们停止使用此API。第一个解决方案不起作用,但第二个解决方案部分起作用,它得到一个seq值的总和
$qdel=mysql\u query(“SELECT*FROM sale\u menu,其中seq IN(“.$impid”)$qdel=mysql_query(“按顺序从销售菜单组中选择sum(total1)作为总计”);而($row=mysql\u fetch\u array($qdel)){$total=$row['total'];$qdel=mysql\u query(“更新销售”菜单集total1=qty*price\u dl,其中seq IN(“.$impid”);$qdel=mysql\u query(“更新销售”菜单集total2=$total,其中seq IN(“.$impid”))
total2列的所有值都是求和值,其中seq=2仅用于解释为什么它不适用于其他序号3,4,5..ets。?我只是在最后几行中用新代码更新了上面的问题,这样你就可以清楚地阅读它。如果你知道为什么它只得到seq=2的第一个seq值的和,并用当seq=3和seq=4…等时,这个值。所以我需要让每组seq数得到它的总和,如果你也能帮我的话。谢谢。你可以使用这个技巧来调试你的代码,获取洞查询文本,并在phpmyadmin或其他内部执行,然后你就可以知道查询的作用,例如echo“UPDATE sale_menu set total2=$total WHERE seq IN(“.$impid.”)”,然后它会在html页面中为您打印此代码,获取生成的代码并以更低的速度执行。您将看到值,然后您就可以知道它出了什么问题祝您好运
$q=mysql_query('select sum(total1) as total from table_name')
while($rw=mysql_fetch_array($q)){

   $total =  $rw['total'];
 }
$qdel=mysql_query("UPDATE sale_menu set total2= $total WHERE seq IN(".$impid.")");