Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 3.169 pregleda

Najnovija ↓

Kako preskociti prvih N rekorda 08.09.2009. u 19:11 · pre 208 meseci #1
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?

:)
Re: Kako preskociti prvih N rekorda 08.09.2009. u 19:25 · pre 208 meseci #2
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
Re: Kako preskociti prvih N rekorda 08.09.2009. u 19:28 · pre 208 meseci #3
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
Potpis
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ć
Re: Kako preskociti prvih N rekorda 08.09.2009. u 19:48 · pre 208 meseci #4
Resenje od MarkoBalkan ne bih ni da komentarisem :D

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 :)
Re: Kako preskociti prvih N rekorda 08.09.2009. u 21:40 · pre 208 meseci #5
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.
Potpis
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme