169 похожих чатов

Скажите пожалуйста как вы решаете данную проблему. Допустим есть модель User

и колонка agent_id.
На выводе если есть дубли по agent_id, то сгруппируется и выводится как одна строка, а внутри этой строки инфо что там 2 или более раз встречается этот агент.
Но суть в чем?
В том что если надо делать пагинацию page(1).per(20) и вывести надо 20 штук, то в выводе может оказаться 5 штук например из-за сгруппирования.
Как можно сделать запрос в БД так, чтобы вывести больше 20 записей, чтобы в итоге вышло 20 записей на отображении?

18 ответов

17 просмотров

Выглядит как обычный group by. Если на последней странице оно тоже схлопнется то проблемы не вижу. Пагинацию тоже по group by считать

>Как можно сделать запрос в БД так, чтобы вывести больше 20 записей, чтобы в итоге вышло 20 записей на отображении? Надо не выводить больше записей в надежде что те 100 агентов у одного юзера перекроются, а пагинировать по сгруппированным результатам.

Eldar-Bahmudov Автор вопроса
Alex Ilizarov
Выглядит как обычный group by. Если на последней с...

Как ты это себе представляешь? Можешь примерный запрос написать? Просто не однозначно, так как group_by это метод руби

Eldar Bahmudov
Как ты это себе представляешь? Можешь примерный за...

В зависимости от контекста, если мы про Array.group_by то это рубильный метод из стандартной библиотеки, но ActiveRecord.group_by не из стандартной библиотеки

Eldar Bahmudov
Нет. Запрос в БД надо делать

Извиняюсь, перепутал с чемто другим, у актив рекорда есть метод .group который группирует по ключам

то есть ты хочешь для 20 различных agent_id вывести по 20 users с этим agent_id? ну что-то типа такого ( не уверен что работает, мог где-то ошибиться ) class Agent < AR has_many :users has_many :latest_users, -> { order(created_at: :desc).limit(20) }, class_name: 'User' end Agent.limit(20).includes(:latest_users).each do |agent| agent.latest_users # 20 юзеров для каждого agent end

Eldar-Bahmudov Автор вопроса
Eldar Bahmudov
Суть не в этом, а в дублях

Тогда не понял что надо надо сделать)

Eldar Bahmudov
Как ты это себе представляешь? Можешь примерный за...

GROUP BY это конструкция sql. group рельсовый это конструкция active record которая поверх него делает абстракцию.

Eldar Bahmudov
Суть не в этом, а в дублях

Я все еще не понимаю в чем проблема если на последней странице у тебя меньше элементов из-за группировки. На всех остальных страницах всегда полный набор будет.

Eldar-Bahmudov Автор вопроса
Alex Ilizarov
Я все еще не понимаю в чем проблема если на послед...

Почему не понимаешь в чем суть? Ну ты из БД запрашиваешь на первой странице 20 штук, а после обработки там может быть 15 штук, а в действительности надо вывести постранично столько, чтобы вышло 20 штук после обработки.

Eldar Bahmudov
Почему не понимаешь в чем суть? Ну ты из БД запраш...

Это ты не понимаешь как GROUP BY с пагинацией работает. Тебе уже прилетает из базы ровно 20 штук на страницу уже схлопанных результатов, и количество страниц ты тоже через группировку считаешь

Eldar-Bahmudov Автор вопроса
Alex Ilizarov
Это ты не понимаешь как GROUP BY с пагинацией рабо...

Просто в group by если не указать все поля, что в select, появляется ошибка

Eldar Bahmudov
Просто в group by если не указать все поля, что в ...

Потому что надо с group by и агрегауиямт в sql практиковаться и понимать как оно работает

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
вот что получается в интерпрететоре, работает и результаты выгляд разумными, но то как выглядит код мне не нравиться, а понять куда двигаться не очень могу, если кому не лень ...
Fedor
42
Карта сайта