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

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

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

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

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

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

fpcount AS (
SELECT COUNT(*)
FROM fp)

SELECT *
FROM fp,
fpcount
LIMIT 10

27 ответов

35 просмотров

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
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
Карта сайта