Неверно выводит SUM mysql
Подскажите пожалуйста, почему в данном запросе выводит 2500 а не 5000.
SELECT SUM(price) FROM products WHERE id IN
(SELECT id_product from order_products WHERE id_order=1)
products table
id | price
1 | 2500
order_products table
id | id_order |id_product
1 | 1 | 1
2 | 1 | 1
Ответы (1 шт):
Автор решения: Ипатьев
→ Ссылка
Потому что надо учить нормальные джойны. А подзапросы - это такие джойны для бедных.
Здесь получается запрос
SELECT SUM(price) FROM products WHERE id IN (1,1)
который на самом деле синтаксический сахар для запроса
SELECT SUM(price) FROM products WHERE id=1 OR id=1
который возвращает 1 строчку
А нужен запрос, который возвращает 2 строчки. И это сделает как раз обычный простой джойн
SELECT SUM(price) FROM order_products op, products p
WHERE p.id=op.id_product and id_order=1