Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Определить на какой странице находится запись

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
3d_killer
Отправлено: 24 Ноября, 2016 - 09:02:39
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




Исходные данные:
лимит при выводе страниц например 100
количество записей например 1000
и элемент с ID 560 (не по порядку)
при запросе сортируем по имени записи например name

Как имея id элемента можно получить страницу на которой он находится или точнее получить OFFSET чтобы при запросе с лимитом данный элемент попал в выборку?
 
My status
 Top
Мелкий Супермодератор
Отправлено: 24 Ноября, 2016 - 10:20:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Посчитать количество записей до этого элемента.
Раз по полю можно сортировать - значит для этого поля реализованы операторы больше и меньше. Значит элементарно считается
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT count(0) FROM tablename WHERE fieldname < 'target value'

Чуток целочисленных манипуляций и у вас есть номер страницы.

А так же, http://use-the-index-luke[dot]com/no-offset


-----
PostgreSQL DBA
 
 Top
3d_killer
Отправлено: 24 Ноября, 2016 - 10:53:34
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




спасибо!
(Добавление)
Мелкий пишет:
Посчитать количество записей до этого элемента.
Раз по полю можно сортировать - значит для этого поля реализованы операторы больше и меньше. Значит элементарно считается
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT count(0) FROM tablename WHERE fieldname < 'target value'

Чуток целочисленных манипуляций и у вас есть номер страницы.

А так же, http://use-the-index-luke.com/no-offset

что то я поспешил, начал делать и не совсем понял как это определить
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT count(id) FROM TABLE WHERE.... ORDER BY name //Получили количество элементов
  3.  

Нас интересует элемент например id=483 лимит вывода на страницу 100 элементов
что то я не понял как мне поможет то запрос
 
My status
 Top
Мелкий Супермодератор
Отправлено: 24 Ноября, 2016 - 13:17:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




А, есть только id. Я где-то потерял получение name по id.

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT count(0) FROM tablename WHERE fieldname < (SELECT name FROM tablename WHERE id=?)

Или, наверное будет лучше (надо проверить поведение при случае отсутствия такого id):
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT count(0) FROM tablename CROSS JOIN (
  2. SELECT name AS needname FROM tablename WHERE id=?
  3. ) targetuser WHERE fieldname < needname

Хотя тоже надо поглядеть, что планировщик захочет сделать.


-----
PostgreSQL DBA
 
 Top
3d_killer
Отправлено: 24 Ноября, 2016 - 13:44:18
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




Мелкий пишет:
SELECT count(0) FROM tablename WHERE fieldname < (SELECT name FROM tablename WHERE id=?)
да вот это вроде то, получаю позицию элемента в выборке, дальше понятно, благодарю
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB