Таблица 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.