столбец «d.discount_amount» должен отображаться в предложении GROUP BY или использоваться в агрегатной функции

#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. Вы проделали хорошую работу, опубликовав реальный ответ, который будет работать. Это помогло бы автору, а также другим членам сообщества при просмотре этого поста, когда вы добавляете подробную информацию об ошибке (например, вы добавили подробную информацию в комментарии о том, что вы сделали из отчета об ошибке) и о том, как решение может помочь ее решить.