[ 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 ] @
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 :)
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.