我在SQL查詢中獲取了一些基本的發票信息,並在同一個查詢中計算了Order Total和Payment Totals。以下是我迄今:使用多個JOINS。 SUM()產生錯誤的值
SELECT
orders.billerID,
orders.invoiceDate,
orders.txnID,
orders.bName,
orders.bStreet1,
orders.bStreet2,
orders.bCity,
orders.bState,
orders.bZip,
orders.bCountry,
orders.sName,
orders.sStreet1,
orders.sStreet2,
orders.sCity,
orders.sState,
orders.sZip,
orders.sCountry,
orders.paymentType,
orders.invoiceNotes,
orders.pFee,
orders.shipping,
orders.tax,
orders.reasonCode,
orders.txnType,
orders.customerID,
customers.firstName AS firstName,
customers.lastName AS lastName,
customers.businessName AS businessName,
orderStatus.statusName AS orderStatus,
SUM((orderItems.itemPrice * orderItems.itemQuantity))
+ orders.shipping + orders.tax AS orderTotal,
SUM(payments.amount) AS totalPayments <-- this sum
FROM
orders
LEFT JOIN customers ON orders.customerID = customers.id
LEFT JOIN orderStatus ON orders.orderStatus = orderStatus.id
LEFT JOIN payments ON payments.orderID = orders.id <-- this join
LEFT JOIN orderItems ON orderItems.orderID = orders.id
一切都散發出來的查詢奇妙除了totalPayments列。數據庫中有一筆付款(10.00)。查詢提供的值是20.00(正好是兩倍)。我的理論是,出於某種原因,查詢是兩次「彙總」付款金額列。任何人都可以爲我闡明這一點嗎?
感謝您的幫助!
嗨,歡迎來到StackOverflow。爲了格式化代碼,比如SQL,選擇它並按下Ctrl + K,這會將塊縮進4個空格,這將被本網站上的腳本解釋爲代碼,因此將被相應地重新格式化。 – 2010-02-20 18:18:47