Необходимо получить фамилию и имя клиента с наименьшим платежом. Платеж имеет различные счета-фактуры, разделенные на метод оплаты, поэтому мне нужно СУММИТЬ платежи с тем же номером счета, прежде чем я решу, какой платеж наименьший. Платеж и Клиент - это разные сущности / таблицы, связанные третьей, Счет-фактура. Отношения один-ко-многим между сущностями выглядят так:
Client -----<= Invoice ------<= Payment.
SELECT c.first_name, c.last_name FROM client c, invoice i
wHERE i.id_client_fk1 = c.id_pk
AND i.num_pk = (SELECT num_invoice_fk1
FROM payment
WHERE SUM(amount_after_tax) = (SELECT MIN(SUM(amount_after_tax))
FROM payment
GROUP BY num_pk));
У клиента PK
используется в счете-фактуре как FK
, а в счете-фактуре PK
используется в качестве платежа как FK
.
Я хочу использовать ту же логику, которую я вставил в код, но, очевидно, она должна работать. Нужно сравнить WHERE SUM(amount_after_tax) = SELECT MIN(SUM(amount_after_tax))
.
Я понимаю, что это не в SQL
(отсюда и название моего вопроса), но это логика, которую я мог бы придумать, чтобы объяснить это.
SELECT c.first_name, c.last_name FROM client c, invoice i
WHERE i.id_client_fk1 = c.id_pk
AND i.num_pk = (SELECT num_invoice_fk1 FROM payment
WHERE amount_after_tax = (SELECT MIN(SUM(amount_after_tax))
FROM payment
GROUP BY num_pk));
Этот код выполняется в SQL
, но он не выполняет то, что я хочу, потому что он сравнивает только отдельные платежи с MIN(SUM(amount_after_tax))
. Допустим, у меня есть 3 платежа за один счет. Мне нужно сложить их, чтобы иметь возможность сравнить их с MIN(SUM(amount_after_tax))
. Также пытался использовать HAVING, и это не работает. Может быть, я неопытный. Пожалуйста, помогите
![Entity Relationship Diagram](https://i.stack.imgur.com/k3jWn.png)