Синтаксическая ошибка или нарушение доступа: 1140 Смешивание столбцов GROUP (MIN (), MAX (), COUNT (), ...) - PullRequest
0 голосов
/ 25 марта 2020

SQL Ошибка

SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1140 Смешивание столбцов GROUP (MIN (), MAX (), COUNT (), ...) с столбцы GROUP недопустимы, если отсутствует предложение GROUP BY (SQL: SELECT sum (Vehicles.total_amount) в качестве TotalAmount, COALESCE (CONCAT (payment_mode.payment_name, '(', ROUND (SUM (Vehicles.total_amount) * 100 / Total.TotalAmount, 2), '%)'), 0) в процентах от vehicles ВЛЕВО ВНЕШНЕГО присоединения payment_mode ON payment_mode.id = Vehicles.pay_mode_id LEFT OUTER JOIN (ВЫБЕРИТЕ SUM (Vehicles.total_amount) в качестве TotalAmount, пометить с транспортных средств ) как Всего ВКЛ. Total.flag = Vehicles.flag ГДЕ Vehicles.created_at> '2020-03-25 00:01:01' и Vehicles.created_at <'2020-03-25 23:59:59' GROUP BY Vehicles.pay_mode_id ) </p>

SQL Запрос

SELECT sum(vehicles.total_amount) as TotalAmount,
        COALESCE(CONCAT(payment_mode.payment_name, '(', ROUND( SUM(vehicles.total_amount)*100/Total.TotalAmount, 2),'%)'),0) as Percent
FROM `vehicles`
LEFT OUTER join payment_mode ON payment_mode.id = vehicles.pay_mode_id
LEFT OUTER JOIN (SELECT SUM(vehicles.total_amount) as TotalAmount, flag from vehicles) as Total ON Total.flag=vehicles.flag
WHERE vehicles.created_at > '$today' and vehicles.created_at < '$todays'
GROUP BY vehicles.pay_mode_id

это мой код, даже этот код хорошо работает на MySQL, но когда я помещаю в Laravel, он показывает ошибки.

1 Ответ

1 голос
/ 25 марта 2020

Ваш подзапрос (SELECT SUM(vehicles.total_amount) as TotalAmount, flag from vehicles) as Total неверен - добавьте к нему GROUP BY flag:

SELECT sum(vehicles.total_amount) as TotalAmount,
        COALESCE(CONCAT(payment_mode.payment_name, '(', ROUND( SUM(vehicles.total_amount)*100/Total.TotalAmount, 2),'%)'),0) as Percent
FROM `vehicles`
LEFT OUTER join payment_mode ON payment_mode.id = vehicles.pay_mode_id
LEFT OUTER JOIN ( SELECT SUM(vehicles.total_amount) as TotalAmount, flag 
                  from vehicles
                  GROUP BY flag ) as Total ON Total.flag=vehicles.flag
WHERE vehicles.created_at > '$today' and vehicles.created_at < '$todays'
GROUP BY vehicles.pay_mode_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...