SQL-запрос с объединением и суммой - PullRequest
0 голосов
/ 18 апреля 2019

Я хочу получить сумму всех счетов-фактур, а также сумму всех заказанных товаров (по количеству).Когда я добавляю объединение, сумма неверна и кажется, что все считается двойным.

Как я могу решить это?

select
sum(invoices_items.item_quantity) as registration_count,
sum(invoices.total_incl_vat) as registration_price
from  invoices
inner join invoices_items on invoices_items.invoice_id = invoices.id; 

Ответы [ 3 ]

3 голосов
/ 19 апреля 2019

Когда вы присоединяетесь к каждой строке счета-фактуры, в результате столько же времени, сколько и элементов.Это приведет к увеличению суммы счетов-фактур.

Если вы просто хотите получить две суммы в одном ряду, вы можете использовать SELECT без предложения FROM и подзапросов.

SELECT (SELECT sum(item_quantity)
               FROM invoice_items) registration_count,
       (SELECT sum(total_incl_vat)
               FROM invoices) registration_price;
0 голосов
/ 19 апреля 2019

При вашем подходе вам нужно будет сначала агрегировать их, прежде чем делать JOIN

SELECT  t.id, registration_price, registration_count
FROM 
(SELECT id, SUM(invoices.total_incl_vat) AS registration_price FROM invoices GROUP BY id) t
INNER JOIN
(SELECT  invoices_id, SUM(invoices_items.item_quantity AS registration_count FROM invoices_items GROUP BY invoices_id) tt 
ON tt.invoices_id = t.id
GROUP BY t.id WITH ROLLUP;
0 голосов
/ 19 апреля 2019

кажется, что элементы счета имеют более одной записи против счета так что вы можете сделать это

select
invoices.id,
(select sum(invoices_items.item_quantity from invoices_items where invoices_items.invoice_id = invoices.id) as registration_count,
sum(invoices.total_incl_vat) as registration_price
from  invoices
group by invoices.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...