Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako preskociti prvih N rekorda

[es] :: MS SQL :: Kako preskociti prvih N rekorda

[ Pregleda: 2384 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

anon315

Član broj: 315
Poruke: 1657
*.adsl-2.sezampro.yu.



+13 Profil

icon Kako preskociti prvih N rekorda08.09.2009. u 18:11 - pre 177 meseci
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?

 
Odgovor na temu

MarkoBalkan

Član broj: 141124
Poruke: 1624
..139.224-dsl.net.metronet.hr.



+19 Profil

icon Re: Kako preskociti prvih N rekorda08.09.2009. u 18:25 - pre 177 meseci
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
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Kako preskociti prvih N rekorda08.09.2009. u 18:28 - pre 177 meseci
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
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
*.adsl-2.sezampro.yu.



+13 Profil

icon Re: Kako preskociti prvih N rekorda08.09.2009. u 18:48 - pre 177 meseci
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
 
Odgovor na temu

retry
Beograd

Član broj: 39405
Poruke: 95
*.adsl.verat.net.



Profil

icon Re: Kako preskociti prvih N rekorda08.09.2009. u 20:40 - pre 177 meseci
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.
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
*.adsl-2.sezampro.yu.



+13 Profil

icon Re: Kako preskociti prvih N rekorda09.09.2009. u 13:23 - pre 177 meseci
Retry, to je upravo ono sto mi treba :)

'fala vi :)
 
Odgovor na temu

[es] :: MS SQL :: Kako preskociti prvih N rekorda

[ Pregleda: 2384 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.