У меня следующая структура таблицы:
Customers - Cust_Orders - Cust_Items - Cust_Payments - Drivers
id id id id id
company cid oid oid name
driver price amount
date qty date
vat
Я хочу показать последний неоплаченный заказ, помеченный идентификатором конкретного водителя + сумму всех неоплаченных заказов для этого конкретного клиента, кроме заказа, которыйуже выбрано.
Так как может быть более одного cust_items и более одного cust_payments, я должен был использовать select from select, так как в противном случае у меня были бы неправильные суммы и вещи запутались, пока я не достиг точки, я забыл, чтоделал.
Любая помощь будет принята с благодарностью.
Мой текущий SQL, в котором отсутствует только последняя часть (сумма других неоплаченных заказов):
SELECT `customers`.`company`,
T1.*,
ROUND( IFNULL( SUM(`cust_payments`.`amount`), 0 ), 2) AS `paid`
FROM (
SELECT `cust_orders`.*,
ROUND( IFNULL( SUM(`cust_items`.`qty` * `cust_items`.`price`), 0 ), 2) AS `total`,
SUM( ( `cust_items`.`price` * `cust_items`.`qty` * `vat` ) / 100) AS `vat`
FROM `cust_orders`
LEFT JOIN `cust_items` ON `cust_orders`.`id` = `cust_items`.`oid`
GROUP BY `cust_orders`.`id`
) `T1`
LEFT JOIN `customers` ON `T1`.`cid` = `customers`.`id`
LEFT JOIN `cust_payments` ON `T1`.`id` = `cust_payments`.`oid`
WHERE `T1`.`driver` = ? GROUP BY `T1`.`id` HAVING (`T1`.`total` - `paid`) > ?
ORDER BY `T1`.`id` DESC LIMIT 1