У меня есть этот пример таблицы
ПОРЯДОК
И пример строки
Я делаю запрос что-то вроде этого
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
попробуйте это, измените условие 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)
;
Вы должны использовать запрос GROUP BY с агрегированной функцией SUM:
SELECT
order_article_id,
SUM(qty) as sum_qty
FROM
orders
WHERE
order_invoice_id=1
GROUP BY
order_article_id
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