MySQL запрос SUM группы?

У меня есть этот пример таблицы

ПОРЯДОК

  • orders_id
  • order_article_id
  • order_invoice_id
  • order_customer_id
  • order_qty

И пример строки

  • 66 8 32 29 15
  • 66 8 32 29 30

Я делаю запрос что-то вроде этого

SELECT * FROM orders WHERE order_invoice_id = 1

В цикле я получил все простые результаты, order_article_id, order_qty, но я получил два результата,
потому что order_inovice_id это то же самое.

РЕЗУЛЬТАТ 1

order_article_id 8
order_qty 15

РЕЗУЛЬТАТ 2

order_article_id 8
order_qty 30

Что мне нужно, чтобы получить только один результат, который я могу сгруппировать и считать результат по order_article_id

Это результат, который мне нужен

РЕЗУЛЬТАТ

order_article_id 8
order_qty 45

-1

Решение

попробуйте это, измените условие where в соответствии с данными.

SELECT order_article_id , SUM(order_qty) as order_qty
FROM orders WHERE order_invoice_id = 32
GROUP BY order_article_id

Результат

| ORDER_ARTICLE_ID | ORDER_QTY |
|------------------|-----------|
|                8 |        45 |

Пример данных

CREATE TABLE orders
(`orders_id` int, `order_article_id` int, `order_invoice_id` int, `order_customer_id` int, `order_qty` int)
;

INSERT INTO orders
(`orders_id`, `order_article_id`, `order_invoice_id`, `order_customer_id`, `order_qty`)
VALUES
(66, 8, 32, 29, 15),
(66, 8, 32, 29, 30)
;

Смотрите демонстрацию SQLFiddle

1

Другие решения

Вы должны использовать запрос GROUP BY с агрегированной функцией SUM:

SELECT
order_article_id,
SUM(qty) as sum_qty
FROM
orders
WHERE
order_invoice_id=1
GROUP BY
order_article_id
0

SELECT order_id, SUM(order_qty) as 'Total Quantity'
FROM orders
WHERE order_article_id = 8
// where order_article_id in (1,2,3) if you have more id's and just want those
GROUP by order_article_id
0
По вопросам рекламы [email protected]