Я не мог придумать подходящее название, извините за что.
Ситуация следующая:
У меня есть две таблицы: montages
и orders
, где Montage
принадлежит Order
.
Моя цель - создать один запрос MySQL, который будет возвращать одно значение с плавающей запятой, чтобы представить сумму значений для нескольких монтажов. Для каждого монтажа в запросе мне нужно разделить бюджет его заказа на количество монтажов, которые относятся к одному заказу. Результат этого деления должен быть атрибутом ecah montage. Наконец, я хочу суммировать эти атрибуты и получить одно значение.
Я пробовал множество вариантов чего-то подобного следующему, но ни один из них не был написан в правильном синтаксисе, поэтому я продолжал получать ошибки:
$sum = App\Montage::where(/*this doesn't matter*/)
->join('orders', 'montages.order_id', '=', 'orders.id') //join the orders table
->select('montages.*, orders.budget') //include the budget column
->selectRaw('count(* where order_id = order_id) as all') //count all the montages of the same order and assing that count to the current montage
->selectRaw('(orders.budget / all) as daily_payment') //divide the budget of the order by the count; store the result as `daily_payment`
->sum('daily_payment') //sum the daily payments
Я действительно потерял с правильным синтаксисом и не могу понять это. Я бы оценил это как довольно простую задачу для людей, которые знают свое дело, но, к сожалению, я не являюсь одним из них ... Любая помощь очень ценится!