Forum » Programiranje » [SQL] top x do top y
[SQL] top x do top y
urbecar ::
Baza Access 2002. Rad bi pridobival iz tabele po 5 zapisov naenkrat urejenih po velikosti. Zapisi pa bi si sledili po velikosti polja "ocena". Tako bi privič rad dobil zapise z 1,2,3,4,5 mesta glede na oceno, naslednjič iz 6,7,8,9,10 .....
zaenkrat imam tole kodo
Koda dela lepo. Pride pa hakeljc če imajo vse slike enako oceno (recimo "ocena"=0). Pote mi drugi sql (tisti pod else) ne vrne nič.
Ali obstaj kakšna varianta , ki porpravila to napako?
zaenkrat imam tole kodo
if (index ==0) {sql ="SELECT TOP 5 slike.* FROM slike ORDER BY slike.ocena DESC";} else { sql ="SELECT TOP " + (index+5).ToString() + " slike.* " +"FROM slike " +"WHERE (((slike.id) Not In (SELECT Top " + index.ToString()+" slike.id FROM slike " +"ORDER BY slike.ocena DESC))) " +"ORDER BY slike.ocena DESC"; }
Koda dela lepo. Pride pa hakeljc če imajo vse slike enako oceno (recimo "ocena"=0). Pote mi drugi sql (tisti pod else) ne vrne nič.
Ali obstaj kakšna varianta , ki porpravila to napako?
OwcA ::
Če nimaš ogromno slik je verjetno cenejše, če si nagrabiš vse in nepotrebne zavržeš "zunaj" (v -- ugibam -- #C).
Otroška radovednost - gonilo napredka.
zerox ::
Če sortiraš po nekem ključu, ki se lahko ponavlja, potem bi jaz naredil tako:
SELECT TOP 2 *
FROM (SELECT TOP 5 * FROM test order by b,id DESC) as T
ORDER BY b,id ASC
id je mora biti unikaten, b pa jeneko polje podobno tvoji oceni (torej se lahko ponavlja). Prva 2ka v selectu predstavlja število prikazanih rezultatov, druga številka 5 pa predstavlja odmik (seveda od zadaj naprej :)). Če to predelaš za svoje potrebe bi moralo delovati vsaj v t-sql deluje ... JET pa je po mojem podoben
SELECT TOP 2 *
FROM (SELECT TOP 5 * FROM test order by b,id DESC) as T
ORDER BY b,id ASC
id je mora biti unikaten, b pa jeneko polje podobno tvoji oceni (torej se lahko ponavlja). Prva 2ka v selectu predstavlja število prikazanih rezultatov, druga številka 5 pa predstavlja odmik (seveda od zadaj naprej :)). Če to predelaš za svoje potrebe bi moralo delovati vsaj v t-sql deluje ... JET pa je po mojem podoben
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | SQL vprašanjeOddelek: Programiranje | 1108 (707) | MrStein |
» | (Access) query po datumuOddelek: Programiranje | 1933 (1508) | imagodei |
» | random funkcija accessOddelek: Programiranje | 1309 (1174) | ToniT |
» | ASP: izbrati samo zadnji zapisOddelek: Izdelava spletišč | 941 (869) | swalow |
» | En enostaven querry v MySQL :(Oddelek: Programiranje | 1468 (1269) | krneki0001 |