繁体   English   中英

PHP - 将多个具有相同 ID 的 sql 结果分组并获取每个结果的数量

[英]PHP - Group multiple sql results with the same ID and get the amount of each

我正在尝试使用相同的product_id对 sql 结果进行分组,并计算每个结果中有多少

在这张照片中,您可以看到我有 4 个具有相同product_id销售。

id product_id qty price date        user
37         50   1  9.90 2018-09-29     1
31         50   1  9.90 2018-09-29     6
32         50   1  9.90 2018-09-29     6
38         50   1  9.90 2018-09-29     1

当前查询:

SELECT
    s.id,
    s.qty,
    s.price
FROM
    sales s
LEFT JOIN products p ON
    s.product_id = p.id
ORDER BY
    s.date
DESC

PHP:

<?php foreach ($sales as $sale):?>
  <tr>
    <td class="text-center"><?php echo count_id();?></td>
    <td><?php echo remove_junk(htmlspecialchars_decode($sale['name'])); ?></td>
    <td class="text-center"><?php echo (int)$sale['qty']; ?></td>
    <td class="text-center"><?php echo remove_junk($sale['price']);?></td>
  </tr>
<?php endforeach;?>

基本上像照片中那样从 a 到 b,而不将它们合并成一行

在此处输入图片说明

编辑以提供更好的解释(再次编辑 product_id 错误):

您应该使用 GROUP 语句按产品 ID 对结果进行分组。 使用 group 语句,您可以对数量列的值求和。 如果您选择只能按产品 ID 分组,那么日期将毫无意义,因为具有该产品 ID 的所有项目将仅按其中之一的日期分组。 由于您在结果集中包含了日期,因此这似乎是您要显示的内容的重要元素。

以下代码将按产品 ID 和日期进行分组,这将显示每个日期购买的每种产品的数量。

SELECT
    s.product_id,
    SUM(s.qty),
    s.price
FROM
    sales s
LEFT JOIN products p ON
    s.product_id = p.id
GROUP BY s.product_id, s.date
ORDER BY
    s.date
DESC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM