Выборка из MySQL - как найти позицию в ней нужной переменной (сайта, книги...)

DanGien

Новичок
Выборка из MySQL - как найти позицию в ней нужной переменной (сайта, книги...)

Делаю выборку из базы.

Нужно определить, какая позиция в этой выборке нужной мне переменной.

Скажем, есть переменная $book

Делаю запрос к базе, выводящий мне все book WHERe что-то там.

Мне нужно узнать, на каком месте в этой выборке будет моя конкретная $book

Или как это узнать, работая с MySQL?

Заранее спасибо!
 

SunDrop

Помощник поисков. робота
Это не имеет абсолютно никакого значения, ибо у SQL таблиц вообще отсутствует такое понятие как позиция в таблице.

Тебе здесь нужно решить некую другую проблему! Вот и опиши ее здесь.
 

Фанат

oncle terrible
Команда форума
DanGien, если тебе это для постраничного вывода, то делай запрос с сортировкой и с ограничением по твою переменную.
и смотри, сколько выдаст записей. это и будет твоя позиция
 

DanGien

Новичок
Вот Фанат все верно понял!:) Да, нужно узнать, какая позиция будет в выдаче, чтобы узнать страницу при постраничном выводе.

Отличная идея, спасибо!%) Попробую, что получится.

-~{}~ 27.03.05 01:54:

Что-то при тестировании нашел ошибку... какой правильный формат команды?

Как ограничить по мою переменную?

Скажем, если у меня есть

$name = "Название книги";

Как найти, какой порядковый номер $name в базе?

$query2 = "SELECT name FROM baza order by name ASC LIMIT ЧТО?";
$result2 = mysql_query ($query2);

Я так понимаю, что LIMIT ограничивает пределы от начала выборки до максимума... а как сделать не по максимум, а именно по мою переменную???

Заранее спасибо за ответ!
 

WebByte

Проходящий мимо
Эээ... Узнать на какой странице будет книга с нужным названием, если выводятся по $limit названий на странице?

На версии 4.1 (с вложенными селектами) скорее всего так:

PHP:
$sql = "SELECT CEIL((COUNT(*)+1)/".$limit.") FROM my_table WHERE id<(SELECT id FROM my_table WHERE book_name='Название книги' ORDER BY id)";
 

WebByte

Проходящий мимо
Правда, сработает точно, если название уникально. Иначе возьмется первое.

На версии без вложенных селектов так:
PHP:
$sql = "SELECT CEIL((COUNT(t1.id)+1)/".$limit.") FROM my_table t1, my_table t2 
WHERE t2.book_name='Название книги' AND t1.id<t2.id";
 

DanGien

Новичок
Смотрю без вложений...

а что за t1.id и t2.id?

my_table t1, my_table t2 ?

У меня одна база base

Там записи вида

id = name

id идут инкрементом...

Есть переменная $page, в которой указывается, сколько записей выдается на страницу.

Надо узнать. на какой странице будет заданная переменная $name
 

WebByte

Проходящий мимо
Эээ.. Чего непонятно? В запросе помимо основной таблицы используется ее алиас.

Замени в примере my_table на имя твоей таблицы, book_name на name, $limit на $page, 'Название книги' на '".$name."', прочти мануал и будет тебе щастье.
 
Сверху