Автор оригинала: Омск
SELECT z1.id, ceil( z1.number /3 ) AS page
FROM (
SELECT df1. * , (
SELECT count( * ) +1
FROM rat_in AS df
WHERE df1.id > df.id
) AS number
FROM rat_in AS df1
ORDER BY df1.count_in ASC
) AS z1
WHERE z1.id =16
Увидел када ответ подумал работает) Ура). потестировал и понял, выдает совсем не то. Выдавал следующее:
id=1 page=1
id=2 page=1
id=3 page=1
id=4 page=2
id=5 page=2
И так далее. Вобщем чтобы получить page=ceil( id /3 )
ЗЫ, Я уже менял AND на WHERE но и тогда получил ошибку. Подумал что не в этом дело.
-~{}~ 20.03.08 22:18:
-- Описание входных параметров запроса (их всего два):
-- 1) @ord - задает порядок сортировки:
-- ACS - по возрастанию
-- DESC - по убыванию
-- 2) @id - задает интересующий нас ID
select t1.*,
count(1) - 1 as cnt -- Кол-во строк до нашего ID.
from test t1
join test t2
on (t1.inr > t2.inr or t1.inr = t2.inr and t1.id >= t2.id)
and @ord = 'ASC'
or
(t1.inr < t2.inr or t1.inr = t2.inr and t1.id >= t2.id)
and @ord = 'DESC'
group by t1.id, t1.inr
having t1.id = @id