我一直在研究這個查詢現在一段時間,我想我有它在我想要的地方,但顯然不是。SQL查詢返回重複結果
數據庫中有兩條記錄(訂單)。該查詢應該返回兩個不同的行,但是會返回兩個具有完全相同值的行。我認爲這可能與我使用的GROUP BY或派生表有關,但我的眼睛很疲憊,沒有看到問題。你們能幫忙嗎?提前致謝。
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,
IFNULL(orderItems.itemTotal, 0.00) + orders.shipping + orders.tax AS orderTotal,
IFNULL(orderItems.itemTotal, 0.00) + orders.shipping + orders.tax - IFNULL(payments.totalPayments, 0.00) AS orderBalance
FROM orders
LEFT JOIN customers ON orders.customerID = customers.id
LEFT JOIN orderStatus ON orders.orderStatus = orderStatus.id
LEFT JOIN
(
SELECT orderItems.orderID, SUM(orderItems.itemPrice * orderItems.itemQuantity) as itemTotal
FROM orderItems
GROUP BY orderItems.orderID
) orderItems ON orderItems.orderID = orders.id
LEFT JOIN
(
SELECT payments.orderID, SUM(payments.amount) as totalPayments
FROM payments
GROUP BY payments.orderID
) payments ON payments.orderID = orders.id
我不認爲我熟悉'IFNULL'關鍵字。如果這不是一個錯字('ISNULL'?),那麼你應該用正確的平臺標記這個。 – Aaronaught 2010-02-23 05:10:25
嘗試逐個刪除連接,直到獲得您期望的單個行。最後一個被刪除的是罪魁禍首。 – 2010-02-23 05:11:24
IFNULL是MySQL中的ISNULL等效項 – 2010-02-23 05:17:08