@tehnomad

Как составить SQL запрос по 2 таблицам с использованием SUM()?

Здравствуйте, есть 2 таблицы, table1 и table2

В table1 есть столбцы model, quantity, manufacturer_id
В table2 есть столбцы order_id, model, sale_quantity

Хочу сделать выборку по table1 но при этом добавить суммированное значение 'sale_quantity' с таблицы table2

Для примера:

table1
model, quantity, manufacturer_id
iphone, 10, apple

table2
order_id, model, sale_quantity
1, iphone, 1
2, iphone, 5
3, iphone, 7

Мне нужно выбрать все строки с table1 в которых quantity<20 и добавить к ним суммированое значение sale_quantity с table2

То есть хочу получить такое:
iphone,10, 13

Пишу такой запрос и получаю ерунду, он выводит 1 строку:
SELECT `table1`.`model`, `table1`.`quantity`, SUM(table2.sale_quantity)
FROM `table1`, `table2`
WHERE `table1`.`manufacturer_id` LIKE 'apple'
AND `table1`.`model`=`table2`.`model`
AND `table1`.`quantity` <20
  • Вопрос задан
  • 1094 просмотра
Решения вопроса 2
@VitalyChaikin
SELECT <Список полей1>, SumFromT2
FROM table1
LEFT JOIN 
   ( SELECT model, SUM(sale_quantity) AS SumFromT2 FROM table2 GROUP BY model) AS T2 
   ON table1.model = T2.model
WHERE <Уловия ограничивающие финальную выборку>
Ответ написан
rozhnev
@rozhnev Куратор тега SQL
Fullstack programmer, DBA, медленно, дорого
Почитайте что-нибудь про JOIN и GROUP BY:
SELECT 
    `table1`.`model`, 
    `table1`.`quantity`, 
    SUM(table2.sale_quantity)
FROM `table1`
JOIN  `table2` ON `table1`.`model`=`table2`.`model`
WHERE 
    `table1`.`manufacturer_id` = 'apple'
    AND `table1`.`quantity` < 20
GROUP BY `table1`.`model`,  `table1`.`quantity`;


Не забудьте проиндексировать поле `model` и `manufacturer_id` в обоих таблицах
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы