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

Коллеги, подскажите, про что почитать для решения задачи созднаия пагинации? Условно

у меня есть 30 постов, мне нужно вернуть 10 штук, но указать что всего их 30.

Сначала я делал это просто двумя запросами, один с каунт, другой с лимит 10.

Хочу найти другой вариант.

Сейчас дошёл до этого, но на вид страшно. Вдруг есть более хорошее?
WITH fp AS (
SELECT *
FROM posts),

fpcount AS (
SELECT COUNT(*)
FROM fp)

SELECT *
FROM fp,
fpcount
LIMIT 10

27 ответов

31 просмотр

А чем плох вариант с 2-мя запросами?

Dmitriy Sviridov
А чем плох вариант с 2-мя запросами?

тем что 2 запроса...? Меня устраивают два, просто мне почему-то кажется, это базовая вещь какая-то с уже готовым решением где-то

Александр Костюченко
тем что 2 запроса...? Меня устраивают два, просто ...

"тем что 2 запроса...?" - в двух горутинах можно взять по коннекту из пула и выполнить эти запросы параллельно, если в этом проблема

Dmitriy Sviridov
"тем что 2 запроса...?" - в двух горутинах можно в...

Да понятно что можно) Но вот видите за 1 запрос по сути можно тоже получить, хочу узнать насколько нормально так делать. Я пока у себя в любом случае оставлю 2, но для общего опыта хочу иметь как минимум 2-3 решения одной и той же задачи, чтобы выбирать нужную в зависимости о требований

Александр Костюченко
Да понятно что можно) Но вот видите за 1 запрос по...

Все остальные способы сложно реализуются, когда куча опциональных условий, т.к. запрос получается хитрым, и всякими квери-билдерами его запарно строить. А строку руками по кускам собирать тоже не сильно приятно. Это я про ваш вариант с WITH

зачем так сложно, я вам выше писал, сделайте count через окна, тогда к таблице придется обращаться только один раз.

Владимир
зачем так сложно, я вам выше писал, сделайте count...

видимо, я не понял как) пойду почитаю про окна

Александр Костюченко
видимо, я не понял как) пойду почитаю про окна

там ничего не надо count(..) over(...) и все даже условий партиций не надо мудрить, т.к. нужно просто посчитать кол-во общее

Владимир
там ничего не надо count(..) over(...) и все даже ...

SELECT *, count(*) OVER () FROM posts LIMIT 10 Типа этого..?)

Александр Костюченко
SELECT *, count(*) OVER () FROM posts LIMIT 10 Ти...

не совсем, limit должен быть в верхнем запросе, а count в подзапросе

Александр Костюченко
Не понял...

select * from (select *,count()... from ...) as t limit 10

Владимир
select * from (select *,count()... from ...) as t ...

но так нельзя т.к требует группировку

Александр Костюченко
но так нельзя т.к требует группировку

нет если дописать over, это не аггрегатный count а оконный

Владимир
нет если дописать over, это не аггрегатный count а...

Так.. и чем это отличается тогда от моего варианта выше? (ваш первый мой второй) select * from (select *,count(*) OVER () from posts) p limit 10; select *,count(*) OVER () from posts limit 10; Результат один... upd у нижнего варианта cost чуть ниже)

Александр Костюченко
Так.. и чем это отличается тогда от моего варианта...

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

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

Понял, большое вам спасибо, я прямо сейчас читаю как раз, на этом примере чуть понятнее стало)

Вселенная удивительная штука, сидел над тем же сейчас бился. И зашёл в чат, спросить то же что и ты Щяс почитаем чем тебе тут помогли

джессик
Вселенная удивительная штука, сидел над тем же сей...

Почитайте) я в итоге сейчас оставлю все равно два запроса т.к текущее решение заставляет изменить сигнатуры структур в которые парсятся данные) и либо указывать явно куда парсить, либо оставить автоматически как сейчас, но с новой структурой) Поэтому решил оставить 2 запроса просто)) Но решение работает, это факт и я хоть знать буду теперь какая есть альтернатива и мб использую её как-нибудь

Warstone
Добавить 1 поле - это сложно?

Я не хочу в объект "пост" добавлять count т.к это поле относится к выборке постов а не одному) Но в каких-то случаях можно было бы и так

Александр Костюченко
Да.

11 записей, count в id 11й строки.

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

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

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
Карта сайта