Специальная колонка-счетчик в select запросе

pachanga

Новичок
Специальная колонка-счетчик в select запросе

Нам необходимо в любом select запросе иметь простую колонку счетчик, показывающую порядковый номер выбранной записи, причем это порядковый номер должен быть абсолютным, без учета условия в WHERE.

Объясню на примере:
Пусть у нас есть результат некоторого запроса без WHERE, скажем:
PHP:
counter            id     
----------------  ------ 
1                    4      
2                    15      
3                    7      
4                    10      
5                    5      
6                    8      
7                    11
Колонка counter содержит как раз абсолютный порядковый номер записи в запросе.

Потом на этот результат как бы наложили ограничение, скажем WHERE id=15 OR id=11:
PHP:
counter            id     
----------------  ------ 
2                    15      
7                    11
Как это сделать в одном запросе(без подзапросов) ума не приложу :(
 
В одном запросе, если я правильно понял, что ты имеешь ввиду, не получиться.
 
А можно ли просто вставить порядковый номер записи результата запроса?
 
>А можно ли просто вставить порядковый номер записи результата запроса?

Куда вставить? Более точно можешь изложить что тебе надо?
 
Есть select запрос, он возвращает некоторый результат:

PHP:
counter            id      
----------------  ------ 
1                    4       
2                    15       
3                    7       
4                    10       
5                    5       
6                    8       
7                    11

Динамически формируемое поле counter содержит порядковый номер записи в выборке.
Как сделать такое поле?
 
какая-то изврашённая фича, ну можно делеть селект в темпори тейбл где формировать эток каунтер, а потом из этой временной уже делать запрос с where
 
>Как сделать такое поле?

Какое поле? Где сделать? В базе? На странице? Где???
В конце концов, напиши простыми словами, что тебе КОНКРЕТНО надо. Типа "есть такие строки ... хочу чтобы они при выводе выводились таким образом ... / или в базе обозначались под номерами ...".
 
pacha
имхо задача из разряда "ты не должен этого хотеть"

как определяется этот порядковый счетчик? Порядок чего он показывает ? (на всякий случай напомню, записи в таблицах изначально неупорядочены)
 
Попробую объяснить еще раз:

Есть select запрос, есть выборка по этому запросу, так вот каждый ряд этой выборки мы можем последовательно пронумеровать, начиная с 1.

Этого можно легко добиться обычным php циклом по выборке, так вот мне интересно, а может ли mysql сам проставить порядковые номера, в отдельную колонку.

Если интересно, зачем понадобился такой изврат, могу пояснить.

Пусть у нас есть на странице ограничивающий пейджер для некоторой выборки(совершенно произвольный select запрос). Сделать такой с пощью заданного offset, limit и подсчитанного общего количества элементов элементарно.

Пусть нам на страницу приходит id конкретного элемента из выборки. Так вот получается надо определить offset для пейджера(limit не меняется), т.е. "прокрутить" пейджер до этого элемента.

Вариант, как это сделать, самый прямолинейный(мы уже им пользуемся):
1) Сделать полную выборку
2) В php цикле пройтись по всем элементам, пока не найден искомый id, увеличивая счетчик
3) Посчитать все элементы выборки
4) Высчитать offset на основе общего количества элементов, счетчика и limit пейджера

Так вот я думал, что можно как-то пронумеровать по порядку(знаю-знаю, предположение более чем сомнительное) выбираемые ряды(см. самый первый пост).

Не пинайте меня, это вопрос изначально из разряда, "а можно ли такое вообще..."
 
Пусть нам на страницу приходит id конкретного элемента из выборки. Так вот получается надо определить offset для пейджера(limit не меняется), т.е. "прокрутить" пейджер до этого элемента.
вот решение, которое я предлагал на другом форуме
http://forums.webscript.ru/showthread.php?s=&threadid=12332&msgnum=16
 
Посмотрел, насколько я понимаю(я не ошибаюсь?), для твоего метода требуется знать о внутренностях sql запроса.
Нам такое не подходит...
 
Боюсь, ты не внимательно читал топик...
Что ты имеешь в виду под LIMIT [offset,] rows ?

Ты можешь прокрутить пейджер до указанного id, как-то с помощью этого? Сомневаюсь...
 
pacha, легко. Просто вначале запроси все id из базы. Если по ним посторен индекс, то это будет выполнено быстро. :)
 
pacha
твоя терминология с "пейджерами" у меня ассоциируется с простой разбивкой результата селекта на страницы.
напиши простым , а не кодированым языком.
 
Сверху