[英]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.