簡體   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