Ich arbeite nun schon eine Weile an dieser Abfrage und dachte, ich hätte sie da, wo ich sie haben wollte, aber anscheinend nicht.
Es gibt zwei Datensätze in der Datenbank (Aufträge). Die Abfrage sollte zwei verschiedene Zeilen zurückgeben, gibt aber stattdessen zwei Zeilen zurück, die genau dieselben Werte haben. Ich denke, es könnte etwas mit den GROUP BY- oder abgeleiteten Tabellen zu tun haben, die ich verwende, aber meine Augen sind müde und sehen das Problem nicht. Kann mir jemand von Ihnen helfen? Vielen Dank im Voraus.
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