在一个mysql列和组中按其他列的值求和值(使用php foreach)

时间:2013-07-24 06:05:48

标签: php mysql

开始写问题,但写了问题,得到答案。所以不要删除所有内容,发布答案(可能有用)。也可能有一些需要改进的地方。

基于此https://stackoverflow.com/a/15048890/2465936答案,尝试对一列中的值进行求和,并按其他列中的值进行分组

例如,名为2_1_journal

的表
TransactionPartnerName | Amount
-------------------------------
Name one               |   1
Name two               |   2
Name one               |   3
Name three             |   10
Name two               |   7
Name one               |   150

结果想得到这个

Name one = 154
Name two = 9
Name three = 10

3 个答案:

答案 0 :(得分:2)

MySQL查询

$query_select_all ="
SELECT TransactionPartnerName, SUM(Amount) 
FROM 2_1_journal
GROUP BY TransactionPartnerName";

然后

$sql = $db->prepare($query_select_all);
$sql->execute();
$sql = $sql->fetchAll();

print_r($sql);获取

Array ( [0] => Array ( [TransactionPartnerName] => name one [0] => name one [SUM(Amount)] => 154.00 [1] => 154.00 ) [1] => Array ( [TransactionPartnerName] => name three [0] => name three [SUM(Amount)] => 10.00 [1] => 10.00 ) [2] => Array ( [TransactionPartnerName] => name two [0] => name two [SUM(Amount)] => 9.00 [1] => 9.00 ) )

到目前为止似乎没问题。

然后foreach

<?php
foreach ($sql as $i1 => $row1) {
?>
<tr>
<td width="90px"><div style="width:90px;">
<?php echo htmlspecialchars($row1['TransactionPartnerName'])?>
</div></td>
<td width="50px"><div style="width:53px;">
<?php echo htmlspecialchars($row1['SUM(Amount)'])?>
</div></td>
</tr>
<?php
}
?>

答案 1 :(得分:0)

如果您从构建查询的数据库中获取此信息几乎总是更好,但如果不在表格中,您可以使用此信息。

$res = array();
foreach($array as $row){
   // make sure we don't get E_NOTICE's when accessing element for the first time
   if (!isset($res[$row["TransactionPartnerName"]])) $res[$row["TransactionPartnerName"]] =0;
   // Use the array key as a means to group
   $res[$row["TransactionPartnerName"]]+= $row1['SUM(Amount)'];
}

echo "<table>";
echo "<thead><tr><th>Transaction Partner</th><th>Total</th></tr></thead>";
echo "<tbody>";
foreach($res as $k=>$v){
    echo "<tr><td>".htmlspecialchars($k)."</td><td>".$v</td></tr>";
}
echo "</tbody>";
echo "</table>";

答案 2 :(得分:0)

如果您创建表格视图会更好。

创建视图:

  1. 转到您的2_1_journal表,
  2. 在表格底部的“显示图表”旁边,点击“创建视图” enter image description here
  3. 然后你会看到这个显示 enter image description here
  4. 在“视图”名称中,填写给您(例如:view_2_1_journal)
  5. 在AS中,填写此内容(或者如上图所示):
  6. enter image description here

    1. 之后,您的view_2_1_journal已成功创建。
    2. view_2_1_journal将是这样的:

      TransactionPartnerName | SUM(`Amount`)
      --------------------------------------
      Name one               |   154
      Name two               |   9
      Name three             |   10
      
    3. 要在php上显示它,使用查询选择就像你一直做的那样,不同的是显示数量,使用内容(例如)类似这样的内容:$show['Amount'],使用此{{ 0}},而不是。

    4. 希望得到这个帮助。