Laravel и CTE - PullRequest
       68

Laravel и CTE

0 голосов
/ 03 октября 2019

Я пытаюсь преобразовать следующий запрос SQL в код Laravel с помощью пакета laravel-cte taudenmeirs.

WITH `cte` AS (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY channel_id ORDER BY created_at DESC) AS row_number
      FROM `Videos`
)
SELECT `Channels`.*, `cte`.*
FROM `Channels`
LEFT JOIN `cte`
       ON `Channels`.`id` = `cte`.`channel_id`
WHERE `cte`.`row_number` = 1;

Проблема в том, что я получаю следующий ответ от сервера:

Подсветка \ База данных \ QueryException: SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1140 Смешивание столбцов GROUP (MIN (), MAX (), COUNT (), ...) без столбцов GROUP недопустимоесли нет предложения GROUP BY (SQL: с cte as (выберите , ROW_NUMBER () OVER (PARTITION BY channel_id ORDER BY create_at DESC) AS row_number из видео) выберите Channels. из каналов, оставшихся присоединиться к cte на каналах.id = cte.channel_id где cte.rn = 1) в файле /Users/mark/Workspace/api.site/vendor/laravel/framework/src/Illuminate/Database/Connection.php в строке 665

...