仅在一行中显示总和

时间:2015-11-22 13:49:27

标签: php mysql

我有这个SQL查询:

$sql = "SELECT (SELECT SUM(total_pay) FROM workers) total,workers. * FROM workers WHERE projects_id = ".$id;

我想将数据显示在表格行中:

$stmt = mysqli_query($con, $sql) or die($sql."<br/><br/>".mysqli_errno($con));
<?php while($rows = mysqli_fetch_array($stmt)){ ?>
    <form action="update_del.php" method="post">
    <th>Payments</th>
    <th>Date</th>
    <th>Project</th>
    <th width="25%">Delete</th>

    <tr>

      <?php while($rows = mysqli_fetch_array($stmt)){ ?>
    <tr>
      <td align="center"><?php echo $rows['total_pay']?></td>
      <td align="center"><?php echo $rows['date_of_pay']?></td>
      <td align="center"><?php echo $name['project_name'] ?></td>
      <td align="center"><!--<input class="imgClass_insert" type="submit" name="submit1" value="" />-->
        <input class="imgClass_dell" type="submit" onClick="return confirm('Are you sure you want to delete?')" name="delete_workers" value=""/>


    </td>
  </tr>

    </tr>

  <tr>
    <td colspan="3">Total <?php echo $name['project_name']?></td>
    <td><?php echo $rows['total'] ?></td>
  </tr>
    <?php } ?>

</table>

问题是,显示的每一行都会重复付款总和,那么如何在表格末尾只显示一次总和查询?应该将它放在为该总和指定的单个查询中吗?

2 个答案:

答案 0 :(得分:1)

您可以从查询中删除library(data.table)#v1.9.6+ setDT(x)[order(time),Diff := shift(value, type= 'lead') - value , by = subject] # subject time value Diff #1: a 1 1.37095845 -0.7380958 #2: b 1 -0.56469817 0.9689665 #3: c 1 0.36312841 -0.4692529 #4: a 2 0.63286260 0.8786594 #5: b 2 0.40426832 -0.4989274 #6: c 2 -0.10612452 2.1245482 #7: a 3 1.51152200 NA #8: b 3 -0.09465904 NA #9: c 3 2.01842371 NA 并使用PHP进行计算,也可以只存储总数并在total语句之外使用它。像

这样的东西
while

尽管你正在遍历所有结果,但最好将它从SQL中删除并计算出来。

<?php $total = 0; while($rows = mysqli_fetch_array($stmt)){ $total = $rows['total']; ?> <tr> <td align="center"><?php echo $rows['total_pay']; ?></td> <td align="center"><?php echo $rows['date_of_pay']; ?></td> <td align="center"><?php echo $name['project_name']; ?></td> <td align="center"> <!--<input class="imgClass_insert" type="submit" name="submit1" value="" />--> <input class="imgClass_dell" type="submit" onClick="return confirm('Are you sure you want to delete?')" name="delete_workers" value=""/> </td> </tr> <?php } ?> <tr> <td colspan="3">Total <?php echo $name['project_name']; ?></td> <td><?php echo $total; ?></td> </tr> </table>

$sql = "SELECT workers.* FROM workers WHERE projects_id = ".$id;

答案 1 :(得分:0)

如果我能正确理解您的问题,那么这可能会帮助您根据需要在最后一行中生成总和。

"SELECT total_pay, date_of_pay,project_name
 FROM workers WHERE project_id=".$id."
UNION
 SELECT 'ALL', SUM(total_pay)
 FROM workers";