#mysql
Вопрос:
Я написал этот запрос, чтобы найти платеж, используя две разные таблицы ,
SELECT (SUM(o_p.price) - d.discount_amount) as payment
FROM order_products as o_p
LEFT JOIN discounts as d ON O_p.order_id = d.order_id
GROUP BY o_p.order_id
Он показывает столбец ошибки «d.discount_amount», который должен отображаться в предложении GROUP BY или использоваться в агрегатной функции
СТРОКА 1: ВЫБЕРИТЕ o_p.order_id, (СУММА(цена) — d.discount_amount) в качестве оплаты…
9:23 ВЕЧЕРА
Есть какие-нибудь предложения, пожалуйста?
Ответ №1:
select t1.sm - t2.discount_amount
from (
select t1.order_id,
sum(t1.price) sm
from order_products t1
order by t1.order_id) t1 left join discounts t2 on t1.order_id = t2.order_id
Комментарии:
1. Пожалуйста, добавьте подробную информацию о том, в чем ошибка, допущенная оригинальным плакатом, и как ваш ответ может помочь ему/ей.
2. Как говорится в отчете об исключениях, весь список запросов должен быть включен в предложение groupby, поэтому вам необходимо изменить порядок слов. Ответ не уникален, я предполагаю, что вы, возможно, захотите написать именно это, но новичкам легко ошибаться в вышесказанном, я не рекомендую
3. выберите t1.order_id, сумма(t1.цена) — ifnull(t2.discount_amount, 0) из order_products t1 слева присоединитесь к скидкам t2 на t1.order_id = t2.order_id группируйте по t1.order_id, t2.discount_amount ;
4. Вы проделали хорошую работу, опубликовав реальный ответ, который будет работать. Это помогло бы автору, а также другим членам сообщества при просмотре этого поста, когда вы добавляете подробную информацию об ошибке (например, вы добавили подробную информацию в комментарии о том, что вы сделали из отчета об ошибке) и о том, как решение может помочь ее решить.