У меня довольно большой запрос, и я пытаюсь получить сумму в столбце orders.price. С кодом ниже он возвращает только 44,00, что является ценой для первого ряда. Когда я запускаю необработанный SQL, он возвращает столбец с 1000+ строками цен в столбце с именем «AGGREGATE». Я хочу вернуть единую сумму по всем этим ценам.
Когда я удаляю группу, она работает в основном нормально. Тем не менее, там есть группа, так как мне кажется, что я получаю повторяющиеся строки.
$query = Order::leftJoin('customers', 'orders.customer_id', '=', 'customers.customer_id')
->leftJoin('addresses', 'orders.order_id', '=', 'addresses.order_id')
->where('orders.customer_id', '!=', 0);
$query->whereIn('user_id', [3, 5, 10, 15]);
$query->groupBy('orders.order_id');
$sum = $query->sum('orders.price');
Я опустил часть кода здесь, но объединения действительно необходимы.
Вот сгенерированный SQL:
SELECT
sum(`orders`.`price`) AS AGGREGATE
FROM
`orders`
LEFT JOIN `customers` ON `orders`.`customer_id` = `customers`.`customer_id`
LEFT JOIN `addresses` ON `orders`.`order_id` = `addresses`.`order_id`
WHERE
`orders`.`customer_id` IS NOT NULL
AND `orders`.`customer_id` != '0'
AND `orders`.`user_id` IN (3, 5, 10, 15)
GROUP BY
`orders`.`order_id`
ORDER BY
`orders`.`order_id` DESC