Obtengo información de factura básica en una consulta SQL y calculo el total del pedido y los totales de pago en la misma consulta. Esto es lo que tengo hasta ahora:Usar uniones múltiples. SUM() produciendo el valor incorrecto
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
Todo sale de la consulta maravillosamente, excepto la columna de TotalPayments. Hay un pago en la base de datos con el valor de (10.00). El valor proporcionado por la consulta es 20.00 (exactamente el doble). Mi teoría es que, por alguna razón, la consulta está "sumando" dos veces la columna de importe de pago. ¿Alguien puede arrojar algo de luz sobre esto para mí?
¡Gracias por la ayuda!
Hola y bienvenidos a StackOverflow. Para formatear el código, como SQL, selecciónelo y pulse Ctrl + K, esto sangrará el bloque en 4 espacios, que serán interpretados por los scripts en este sitio para que signifiquen un código y, por lo tanto, se formateará en consecuencia. –