Jes*_*nch 4 mysql sql duplicates
我已经研究这个查询一段时间了,我以为我在我想要的地方有它,但显然不是。
数据库中有两条记录(订单)。查询应该返回两个不同的行,而是返回具有完全相同值的两个行。我认为这可能与我使用的 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
Run Code Online (Sandbox Code Playgroud)
通常,当您加入许多表并最终得到重复的行时,这是因为您没有看到整个画面。如果您要执行“select *”以查看查询中包含的所有列(而不是返回列的子集)并比较结果行,您会发现沿途某处有一列包含不同的数据.
| 归档时间: |
|
| 查看次数: |
5699 次 |
| 最近记录: |