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

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

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

18 ответов

45 просмотров

Выглядит как обычный 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 практиковаться и понимать как оно работает

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта