В конце концов с помощью комментаторов я понял, что случилось. На самом деле это не так, но я точно не поймал.
// this code below is work fine. query will return page 15 with 10 records in.
select *from sheet_record inner join (select count(*) as total from sheet_record) as sr on 1=1 limit 10 offset 140;
Я думал, что соединение берет таблицу слева и соединяется с правой таблицей. Но в тот момент, когда я работал над скриптом (выше), я имел на правой стороне представление (таблица, построенное подзапросом) вместо чистой таблицы, и я думал, что левая сторона также представляет собой представление, сделанное (выберите * from sheet_record), которое ошибка.
Идея состоит в том, чтобы получить набор записей из таблицы X с дополнительным столбцом, имеющим значение общего количества записей в таблице. (Это обычная проблема, когда есть потребность показать таблицу в пользовательском интерфейсе, используя пейджинг. Чтобы узнать, сколько страниц должно быть доступно, мне нужно знать, сколько записей в целом, поэтому я могу рассчитать, сколько страниц доступно)
Я думаю, что это должно быть что-то
select * from (
(here is some subquery which will give a view using count(*) function on some table X and it will be used as left table)
right join
(here is some subquery which will get some set or records from table X with limit and offset)
on 1=1 //becouse i need all row from right table(view) in all cases it should be true
)
запрос с правом присоединиться будет немного сложнее. Я использую postgres.
Так в конце концов мне удалось получить результат с правом присоединиться
select * from (select count(*) as total from sheet_record) as srt right join (select * from sheet_record limit 10 offset 140) as sr on 1=1;
Не могли бы вы подробнее остановиться на том, что вы собираетесь с этим запросом ... Номер строки, возможно –
Пример: получить 10 записей из таблицы X (идентификатор , имя, возраст). Типичный результат включает дополнительный столбец «total_rows» (который представляет собой общее количество строк в таблице X). Важное замечание: как сделать это с правильным присоединением? – simar