如何在查询中将我的数据库中的产品名称分组为同名?

时间:2015-04-20 20:41:55

标签: php mysql

我有一个餐馆数据库,我想生成所售产品的每日销售报告。所以基本上列是:

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

3 个答案:

答案 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>