Таблица, где X, Y и Z имеют отдельные количества.
Пример данных:
Name | Amount | Date —————|————————|————————— X | 100 | 15-11-17 Y | 50 | 15-11-17 X | 50 | 15-11-17 Z | 70 | 15-11-17 Z | 30 | 15-11-17
Теперь я хочу показать таблицу, в которой X вернет одну строку с суммированием двух значений в одну и ту же дату.
Ожидаемый результат:
Name | Amount | Date —————|————————|————————— X | 150 | 15-11-17 Y | 50 | 15-11-17 Z | 100 | 15-11-17
Итак, что же такое запрос laravel? Я использую groupBy (). Но не может получить целевой результат.
Вот мой код запроса laravel
$data = DB::table('transactions') ->select('transactions.*') ->groupBy('transactions.title_id') ->whereDate('transactions.created_at', '=', $date) ->get();
И получил эту ошибку непрерывно
"SQLSTATE[42000]: Syntax error or access violation: 1055 'finance_report.transactions.id' isn't in GROUP BY
Кто угодно, пожалуйста, помогите
Предполагая, что ваше имя таблицы – это transactions
, а столбцы и данные, как в вашей примерной таблице, – SQL-запрос будет
SELECT Name, SUM(Amount) as Amount, Date FROM transactions GROUP BY Name, Date
В laravel вы напишете это как
$data = DB::table('transactions') ->select('Name', DB::raw('SUM(Amount) as Amount'), 'Date') ->groupBy('Name', 'Date') ->get();
Вы можете добавить свои условия WHERE и что вам нужно в запросе. Но если вам нужно выбрать больше столбцов из таблицы, вам также нужно будет добавить их в предложение groupBy()
. Что-то вроде transactions.*
, Вероятно, не будет работать из-за режима ONLY_FULL_GROUP_BY
. Но это также, вероятно, не имеет смысла.
Вы можете использовать SUM (Amount) с groupBy (date)