2017-10-13 47 views
2

编写返回一行在发票表中包含这些列的每个供应商提供的SELECT语句: 向卖方表 在该invoice_total列的总和VENDOR_ID列发票表该供应商不能在MySQL查询分出不同的IDS

SELECT 
    distinct vendor_id, SUM(invoice_total) AS Invoice_totals 
FROM 
    invoices i 
    join vendors v using (vendor_id); 

我能够显示所有34个vendor_ids没有SUM(invoice_total),但一旦我再补充一点,它所有这些合并成一个。我怎样才能避免这种情况发生?

+0

您正在使用什么RDBMS? –

+0

添加'Group By Vendor_ID'并移除'Distinct'。 –

+0

MySQL。并感谢你,这是问题:) –

回答

6

请勿使用select distinctsum()。使用group by。这使得查询的意图更加清晰。

其次,你想有一个left join

SELECT vendor_id, SUM(i.invoice_total) AS Invoice_totals 
FROM vendors v LEFT JOIN 
    invoices i 
    using (vendor_id) 
GROUP BY vendor_id; 
+0

这是答案。谢谢。 –

+0

啊。先把'Vendors'放在'Invoices'上,然后做'LEFT JOIN'将显示'Vendors'没有'Invoices'。好点子。 –