Количество записей каждого наименования Mysql

111
17 октября 2019, 23:20

как вывести наименование товара и его общее количество в таблице? вот такая структура таблицы

Answer 1

Судя по всему перед нами некая таблица деталей заказов клиентов. В простом случае для подсчета количества потребуется запрос вида

select name, sum(`count`) as q
from orders
group by name

Однако, можно предположить, что поле name в таблице представлено для сохранения названия товара именно в том виде, как было при заказе, и что в целом название позиции может изменяться. Аналогично и с ценой, но цена-то логично, что меняется. (а вот поле cost при наличии price & count кажется избыточным, хотя может и учитывать какие-то скидки.)

Поэтому группировку по имени делать нельзя, можем получить разные строки для одного товара с разными названиями. В связи с этим, проще присоединить таблицу товаров и вывести фактическое наименование на текущий момент времени.

SELECT p.id, p.name
     , sum(o.count) AS qnt
     , sum(o.cost) AS total
FROM orders as o
LEFT JOIN products AS p ON (p.id = o.product_id)
GRPOUP BY p.id, p.name
ORDER BY p.name

в целом данный запрос будет эквивалентен варианту с обратной последовательностью таблиц и внутренним соединением (пересечением) from products inner join orders.
Если же вы хотите видеть полный перечень товаров, с учетом тех, где 0 заказов, то потребуется внешнее соединение from products left join orders.

READ ALSO
Chart вывод графика

Chart вывод графика

почему пишет

112
Не отправляет сообщение VK API PHP

Не отправляет сообщение VK API PHP

Я пишу сообщение и мне не приходит ответПомогите пожалуйста

154
Объект содержащий массив

Объект содержащий массив

Вот есть рабочий код

135