У меня есть эти таблицы: клиенты , customer_invoices , customer_invoice_details , у каждого клиента много счетов, и в каждом счете много деталей.
Клиент с идентификатором 574413
имеет следующие счета-фактуры:
select customer_invoices.customer_id,
customer_invoices.id,
customer_invoices.total_price
from customer_invoices
where customer_invoices.customer_id = 574413;
результат:
customer_id invoice_id total_price
574413 662146 700.00
574413 662147 250.00
каждый счет здесь имеет две детали (или строки счета):
первый счет 662146
:
select customer_invoice_details.id as detail_id,
customer_invoice_details.customer_invoice_id as invoice_id,
customer_invoice_details.total_price as detail_total_price
from customer_invoice_details
where customer_invoice_details.customer_invoice_id = 662146;
результат:
detail_id invoice_id detail_total_price
722291 662146 500.00
722292 662146 200.00
второй счет 662147
:
select customer_invoice_details.id as detail_id,
customer_invoice_details.customer_invoice_id as invoice_id,
customer_invoice_details.total_price as detail_total_price
from customer_invoice_details
where customer_invoice_details.customer_invoice_id = 662147;
результат:
detail_id invoice_id detail_total_price
722293 662147 100.00
722294 662147 150.00
У меня проблема с этим запросом:
select customers.id as customerID,
customers.last_name,
customers.first_name,
SUM(customer_invoices.total_price) as invoice_total,
SUM(customer_invoice_details.total_price) as details_total
from customers
join customer_invoices
on customer_invoices.customer_id = customers.id
join customer_invoice_details
on customer_invoice_details.customer_invoice_id = customer_invoices.id
where customer_id = 574413;
неожиданный результат:
customerID last_name first_name invoice_total details_total
574413 terry amine 1900.00 950.00
Мне нужно иметь SUM
из total_price
счетов иSUM
из total_price
деталей для каждого клиента.В этом случае я должен получить 950
как total_price
для обоих столбцов (invoice_total
& details_total
), но это не так.что я делаю не так и как я могу получить правильный результат, пожалуйста.Ответы в похожих темах не имеют решения для этого случая.