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

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

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

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

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

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

fpcount AS (
SELECT COUNT(*)
FROM fp)

SELECT *
FROM fp,
fpcount
LIMIT 10

27 ответов

11 просмотров

А чем плох вариант с 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й строки.

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Всем привет!) я тут новенький и пытаюсь освоить evolution методом тыка. У меня при переходе между папками файлов выскакивают вот такие уведомления Можете подсказать как их от...
Диман Samoed
10
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Карта сайта