PHP - сгруппировать несколько результатов sql с одинаковым идентификатором и получить сумму каждого - PullRequest
0 голосов
/ 30 сентября 2018

Я пытаюсь сгруппировать результаты sql с одинаковыми product_id и посчитать, сколько там каждого из

На этой фотографии вы можете видеть, что у меня 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, как на фотографии,без объединения их в один ряд

enter image description here

1 Ответ

0 голосов
/ 30 сентября 2018

Отредактировано для лучшего объяснения (снова отредактировано для ошибки product_id):

Вы должны использовать оператор GROUP для группировки результатов по идентификатору продукта.С помощью группового оператора вы можете затем СУММИТЬ значение столбца количества.Если вы выберете, вы можете сгруппировать только по идентификатору продукта, но тогда дата будет бессмысленной, поскольку все элементы с этим идентификатором продукта будут сгруппированы с датой только одного из них.Поскольку вы включили дату в свой набор результатов, кажется, что это важный элемент того, что вы пытаетесь показать.

Следующий код будет GROUP BY как по идентификатору продукта, так и по дате, который покажет вам, какмногие из каждого продукта были куплены на каждую дату.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...