[ anon315 @ 08.09.2009. 18:11 ] @
Cao,

u pitanju je MS SQL server 2000.

Radim paginaciju i aplikacija salje zahtev koji govori o kojoj stranici je rec i koja je velicina stranica. Na primer: daj mi 6. stranicu, stranica ima 10 rekorda.

Vidim da baza ima TOP i tako mogu da mu kazem koliko hocu rezultata, ali nema nacin da mu kazem: "prekoci mi prvih N".

Nasao sam neka resenja sa procedurama, ali mi to ne pije vodu, jer su procedure zabranjene.

Resenja koja podrazumevanju sortiranje po id ne dolaze u obzir, jer je potebno drugacije sortiranje.

Jel ima neka sansa da se ovo izmajmunise?

[ MarkoBalkan @ 08.09.2009. 18:25 ] @
1.način

select * from tabel where id between 51 and 60

recimo za 6 stranicu

2.način.
da u jednu klonu zapisuješ stranice i redni broj recorda.

npr.

id, str, rbr
1,1,1
2,1,2
3,1,3
4,1,4
5,1,5
6,1,6
7,1,7
8,1,8
9,1,9
10,1,10
11,2,1
12,2,2
12,2,3
[ mmix @ 08.09.2009. 18:28 ] @
Ima, resenje se zapravo moze videti u .NET implementaciji .Skip().Take() sekvence u LINQ2SQL. Evo linka:

[Tutorial] Optimizovan paging kroz LINQ to SQL, a bogami i kroz obican SQL
[ anon315 @ 08.09.2009. 18:48 ] @
Resenje od MarkoBalkan ne bih ni da komentarisem

Mmix, ne citas pazljivo

Tvoje resenje zahteva f-ju ROW_NUMBER() koja je dostupna samo u verziji 2005, a ja imam 2000.

Sledece resenje na linku koji si dao je za 2000, ali koristi stored procedure, a to sam isto rekao da ne mogu da koristim..

10x anyway
[ retry @ 08.09.2009. 20:40 ] @
Citat:
Vanja Petreski:
Jel ima neka sansa da se ovo izmajmunise?

:)

pa, moze da se ubudzi :)

Code:

SELECT * FROM (
  SELECT TOP n * FROM (
    SELECT TOP z columns      -- (z=n+skip)
    FROM tablename
    ORDER BY key ASC
  ) AS FOO ORDER BY key DESC -- ('FOO' may be anything)
) AS BAR ORDER BY key ASC    -- ('BAR' may be anything)


Znaci, prvo uzmes sve redove (i one koje hoces da preskocis i one koji ti trebaju).
Zatim, da bi dobio samo one koje hoces, poredjas ih desc i uzmes top "kolko ti treba".
Na kraju ih order by asc, jer su ostali poredjani "naopako".

inace, ovo resenje je odavde

pozdrav.
[ anon315 @ 09.09.2009. 13:23 ] @
Retry, to je upravo ono sto mi treba :)

'fala vi :)