@carter4

Как решить вопрос с LEFT JOIN?

Таблица oc_order:
order_id        total        
1                    100
2                    300
3                    500

Таблица oc_order_history:
order_history_id        order_id
1                                    1
2                                    1
3                                    2
4                                    3

Задача получить сумму total:
SELECT SUM(o.total) as total
			FROM 
				" . DB_PREFIX . "order o 
			LEFT JOIN 
				" . DB_PREFIX . "order_history oh 
						ON o.order_id = oh.order_id
			WHERE 
					o.payment_code = 'cod' 
				AND o.order_status_id NOT IN (7,21) 
				AND oh.order_status_id = 16 
				AND MONTH(oh.date_added) = MONTH(NOW()) AND YEAR(oh.date_added) = YEAR(NOW())

Но если в таблице oc_order_history есть несколько записей с одним order_id, тогда результат и может раздвоиться.
Нужно выбрать только последний order_history_id.
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
@tumbler
бекенд-разработчик на python
Нужно из order_history выкинуть дубли? Делаем подзапрос с оконной функцией, выбирающей последнюю запись из группы.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы