Я получаю базовую информацию о счете в SQL-запросе и вычисляю итоговые суммы заказа и суммы платежей в том же запросе. Вот что у меня есть до сих пор:Использование нескольких 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 пробела, который будет интерпретироваться сценариями на этом сайте, чтобы обозначить код, и, соответственно, будет переформатирован. –