我在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