|
MySQL.RU - Webboard
Вернуться
php + MySQL: запрос - определение страницы(+) (Rebel) 25/08/2005 - 02:09:22
Re: php + MySQL: запрос - определение страницы(+) (barfly) 25/08/2005 - 16:21:54
Re: php + MySQL: запрос - определение страницы(+) (Rebel) 25/08/2005 - 21:26:31
Re: php + MySQL: запрос - определение страницы(+) (Dinky) 26/08/2005 - 00:00:55
Re: php + MySQL: запрос - определение страницы(+) (Rebel) 26/08/2005 - 01:37:28
Re: php + MySQL: запрос - определение страницы(+) (Dinky) 26/08/2005 - 18:46:37
Re: php + MySQL: запрос - определение страницы(+) (Rebel) 28/08/2005 - 19:52:49
> Original message text:
> From: Rebel - 25/08/2005 - 02:09:22
> Subject:php + MySQL: запрос - определение страницы(+)
> -----------------
> ситуация:
> имеется таблца с, например, 2 столбцами:
> id - числовой
> name - текстовый
>
> из нее осуществляется вывод примерно таким запросом:
> SELECT `id`, `name` FROM `table` ORDER BY `name` LIMIT $start,$show;
>
> где $start - отправная точка, $show - количество элементов на странице ($show определено заранее), например $start = 0; $show = 5;
>
> надо: зная значение id, лежащего в переменной $id определить параметр $start (ну или порядковый номер элемента с id=$id) для вышеуказанного запроса, чтобы вылезла та страница, на которой расположен элемент с известным id, как???
>
> конечно можно сделать SELECT `id`, `name` FROM `table` ORDER BY `name`;
> потом перебрать в цикле от начала до элемента, у которого id=$id, прибавляя при каждом проходе цикла единичку к переменной-счетчику, и отталкиваясь от этого получить $start, но хочется более оптимальное решение, без последовательного перебора...
>
From: barfly - 25/08/2005 - 16:21:54
Subject:php + MySQL: запрос - определение страницы(+)
-----------------
Можно попробовать что-то вроде
1)SELECT `id`, `name` FROM `table` ORDER BY `name` WHERE ('name' > (SELECT 'name' from 'table' WHERE 'id' = $id) ) LIMIT $show;
Не знаю точно как сиквел сравнивает строки,
поэтому
2)Смотреть в сторону
FIELD(str,str1,str2,str3,...)
Возвращает индекс строки str в списке str1, str2, str3, .... Если строка str не найдена, возвращается 0. Функция FIELD() является дополнительной по отношению к функции ELT():
mysql> SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');
-> 2
mysql> SELECT FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');
-> 0
FIND_IN_SET(str,strlist)
Возвращает значение от 1 до N, если строка str присутствует в списке strlist, состоящем из N подстрок. Список строк представляет собой строку, состоящую из подстрок, разделенных символами `,'. Если первый аргумент представляет собой строку констант, а второй является столбцом типа SET, функция FIND_IN_SET() оптимизируется для использования двоичной арифметики! Возвращает 0, если str отсутствует в списке strlist или если strlist является пустой строкой. Если один из аргументов равен NULL, возвращается 0. Данная функция не будет корректно работать, если первый аргумент содержит символ `,':
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
-> 2
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
23735
|
|