2016-08-02 125 views
-1

我試圖運行此查詢的SQL:SQL查詢與內部聯接

SELECT c.company, sum(i.grand_total) FROM billing_invoices i 
INNER JOIN billing_salesman_commission b ON i.invoice_number = b.invoice 
INNER JOIN customer c ON i.customer_sequence = c.sequence 
WHERE 
i.status = 'Unpaid' and DATE(i.datetime) >= '2015-10-01' 
GROUP BY c.sequence 

它返回正確的數據,但其移動小數點爲grand_total列,它總結

由於例如,當我運行SELECT sum(grand_total) from billing_invoices WHERE customer_sequence = '270'時,它返回35.29但是當我運行我的第一個查詢時,它返回352.90000915527344

+1

您還有其他條件/聯接嗎?查看總和是否正確的正確方法是刪除您的總和和組,將所有行都設置爲excel,並將它們加在一起 – techspider

+0

您已經標記了MySQL以及SQL Server。你在使用哪一個? – atjoedonahue

+0

MySQL,我將刪除其他。是一個意外 – charlie

回答

0

您正在使用兩個不同的where子句。您確定customer_sequence = 270返回與status =「unpaid」和datetime> = 2015-10-01完全相同的結果嗎?我敢打賭它不是。

你也可能得到不同的結果,因爲你在一個查詢中運行一個組中的sum(),然後在第二個中運行一個沒有組的sum()。不知道底層數據很難說。還有其他因素與連接表的關係以及「序列」上的數據完整性。

一次完成一個連接,並確認您正在獲取您期望的數據。從刪除「group by」子句開始,並參閱