Zapytanie wybierające sąsiadujące rekordy danego typu

0

Robię tabelę dla dokumentów pdf z głównymi kolumnami: "id", "typ", "czas wstawienia (timestamp)", "nazwa dokumentu", "nazwa pliku". Dokumenty te mają być dostępne na stronie www do przeglądania. Kolumna ''typ" będzie określała jeden z 20 typów dokumentów i jest po to aby pogrupować te dokumenty. Tak fizycznie to każdy "typ" dokumentu to osobna działka i nie będą się one ze sobą wiązały. Wszystkich dokumentów będzie dużo i będą często dodawane nowe. Na stronie www mają być wylistowane w kilku podstronach linki do wszystkich dokumentów pdf danego typu. Kliknięcie na jeden z nich powinno wykonać select do bazy który zwróci informację o tym wybranym pliku oraz o pliku bezpośrednio go poprzedzającym datowo (ale ten sam typ) oraz następującym zaraz po nim datowo.
No i właśnie nie wiem jak powinien wyglądać ten selct. Czyli mam numer "id" jednego pliku, numer jego "typu" i "czas wstawienia" i muszę selectem wybrać plik bezpośrednio wcześniejszy i następny danego typu. Ma ktoś jakieś pomysły?
PS
Indeksy muszę mieć na kluczu "id" i na "typ"ie. Chyba przydałby sie też na "czas wstawienia" ale czy to (trzy indeksy) nie obciąży bardzo bazy przy wstawianiu nowych dokumentów?

0

spróbował bym czegos takiego

select id, typ,czas, .... from DOKUMENTY where id=12345 
union 
select  id, typ,czas, .... from DOKUMENTY where czas= (select max(czas) from dokumenty where id <12345 and typ='TYP')
union 
select  id, typ,czas, .... from DOKUMENTY where czas = (select min(czas) from dokumenty where id >12345 and typ='TYP')
order by 3

nie wiem jak w MySql'u ale na Firebirdzie działa

0

Dzięki, wygląda skomplikowanie ale wydaje się że będzie działać. Przetestuję to.

0

Dzięki, wygląda skomplikowanie ale wydaje się że będzie działać. Przetestuję to.

1 użytkowników online, w tym zalogowanych: 0, gości: 1