我有一个餐馆数据库,我想生成所售产品的每日销售报告。所以基本上列是:
Product name | Qty | Amount
现在,当我使用php应用while循环时,它向我显示数据库中可用的所有记录,例如,如果我在表中有15次绿茶,它将以数量1显示15次。
我只是想合并它,并希望将数量显示为15。
我的PHP代码是:
<?php
$bt = $_POST['bt'];
$check_in = $_POST['check_in'];
if($bt != '') {
$g = mysql_query("select * from bill2 where date='{$check_in}'");
echo '
<div class="col-md-12">
<div class="box">
<div class="box-title">
</div>
<div class="box-body">
<table class="table table-bordered">
<tr>
<th>#</th>
<th>Item Name</th>
<th>Quantity Sold</th>
<th>Total Amount</th>
</tr>';
$x=0;
while($gff = mysql_fetch_assoc($g)) {
$x++;
echo '<tr>
<td>' . $x . '</td>
<td>' . $gff['itemid'] . '</td>
<td>' . $gff['qty'] . '</td>
<td>' . $gff['amount'] . '</td>
</tr>';
}
echo '</table></div></div></div>';
}
?>
输出:
# Item Name Quantity Total Amount
1 Green Mint Tea 1 30
2 Green Mint Tea 1 30
3 Vanilla Tea 1 35
4 Black Tea 1 30
预期产出:
# Item Name Quantity Total Amount
1 Green Mint Tea 2 60
2 Vanilla Tea 1 35
3 Black Tea 1 30
答案 0 :(得分:2)
您可以使用GROUP BY
SELECT `product_name`, count(`product_name`) AS `product_count`, sum(`amount`) AS `AMT`
FROM `menu_items`
GROUP BY `product_name`
对于PHP,您将使用从数据库中获取的变量名称。我将下面的例子与我上面写的查询相匹配 -
echo '<tr>
<td>'.$x.'</td>
<td>'.$gff['product_name'].'</td>
<td>'.$gff['product_count'].'</td>
<td>'.$gff['AMT'].'</td>
</tr>';
此外,您需要stop using mysql_*
functions。它们不再被维护,而是officially deprecated。请改为了解prepared statements,并使用PDO。
答案 1 :(得分:0)
您可能想要做的是使用一个查询来获得结果:
select Productname, sum(Qty), sum(Amount) from table GROUP BY Productname
答案 2 :(得分:0)
根据您的评论更新。
更改
select * from bill2 where date='{$check_in}'
到
select itemid, SUM(qty), SUM(amount) from bill2 where date='{$check_in}' GROUP BY itemid
然后在while循环中,您可以将其更改为以下内容,它应该可以正常工作。
<td>'.$gff[0].'</td>
<td>'.$gff[1].'</td>
<td>'.$gff[2].'</td>