|
|
|
| Известен id одной записи.
Есть запрос на выборку записей, причем запись с известным нам id заведомо туда входит.
Требуется определить, какой у этой записи порядковый номер в запросе.
Делаю это через цикл, перебирая результат запроса, но может есть какой-нибудь стандартный способ определить порядковый номер записи по ее id? | |
|
|
|
|
|
|
|
для: yuk
(15.11.2007 в 16:28)
| | Порядковый номер в результирующем наборе? Или от начала таблицы или еще как-то? | |
|
|
|
|
|
|
|
для: yuk
(15.11.2007 в 16:28)
| | Другой способ вряд ли будет изящным - лучше использовать цикл - вам ведь всё-равно данные из результирующей таблицы выводить нужно? | |
|
|
|
|
|
|
|
для: cheops
(15.11.2007 в 16:57)
| | В итоге мне нужны три записи - запись с известным id, и две соседние записи в рзультирующем наборе (предыдущая и следующая).
Тогда оставлю цикл. Спасибо. | |
|
|
|
|
|
|
|
для: yuk
(15.11.2007 в 17:05)
| | А в запросе есть ORDER BY?
Если нет, тогда не понятно что-такое соседи по запросу.
Если есть и таблица маленькая или есть индекс по ключам, тогда возможен следующий селект
SELECT * FROM tbl
where key = key_value
or key in (SELECT max(key ) FROM tbl where key = key_value)
or key in (SELECT min(key ) FROM tbl where key = key_value); | |
|
|
|
|
|
|
|
для: yuk
(15.11.2007 в 16:28)
| | Зачем цикл ? Делаете обычный запрос с самосоединением. | |
|
|
|
|
|
|
|
для: oradev
(16.11.2007 в 14:51)
| | ORDER BY в запросе есть (по дате), в результате чего некоторые id перемешиваются. Так что напрямую этот вариант не подходит. Но мысль интересна, идея понятна. Попытаюсь привязаться как-нибудь к дате.
А запрос с самосоединением это как? | |
|
|
|
|
|
|
|
для: yuk
(19.11.2007 в 01:58)
| | Самообъединение - это многотабличный запрос к одной таблице, когда в качестве разных таблиц выступают копии одной таблицы
SELECT ... FROM tbl AS first, tbl AS second ...
|
| |
|
|
|