PDA

Pogčedajte punu verziju : TOP 5 rekorda iz baze ?


Ministar
20. 11. 2006., 10:40
Pozdrav, moze li mi ko pomoci oko top 5 rekorda iz baze, probao sam sa ovim al ne ide:

Set RS_Najcitaniji= Conn.Execute("SELECT top 5 * FROM Vijesti Order by Broj_Pregleda Desc")

Zapravo ovo mi radi na localhost, ali na serveru mi ispise sve vijesti jedna ispod druge.

Imam bazu, tabela Vijesti i u njoj polja ID, Naslov, Sadrzaj, Broj_Pregleda

Broj pregleda je number field, i tu se upisuje broj citanja nekih vijesti, e sad bi trebao top 5 naslova , tj koji imaju najvise citanja,


a ako neko ima vec primjer recimo top 5 naslova u zadnjoj sedmici e sad neznam pokusao sam sa gogleom al tesko.

Hvala puno svima koji bar malo pomognu.

cvele
20. 11. 2006., 11:08
da bi imao po nedelji onda moras da uvedes time_stamp ili nesto sl
ako se radi o mysql, a pretpostavljam da se radi onda ce ti limit 5 resiti posao. samo posto uvedes time_stamp moraces da napravis neki whare koji ce vracati za zadnjih 7 dana.

Takodje mozes i po nedelji recimo treba ti za 12. nedelju u godini...

WHERE WEEKOFYEAR(time_stamp) = 12 LIMIT 5


Moze tu jos dosta cuda da se uradi.

Btw. Cini mi se da mysql ne podrzava top...

dinke
20. 11. 2006., 13:05
select ID, Naslov, Sadrzaj, Broj_Pregleda from Vijesti
order by br_pregleda desc limit 5

BraMom
20. 11. 2006., 13:32
Čini mi se da Ministar ne koristi mySQL, ovo "SET RS = ..." mi više liči na neki vb kod.

Bilo bi lepo da postuješ sa kojom bazom radiš.

cvele
20. 11. 2006., 15:11
Čini mi se da Ministar ne koristi mySQL, ovo "SET RS = ..." mi više liči na neki vb kod.

Bilo bi lepo da postuješ sa kojom bazom radiš.

sta ti je cudno kod SET ? mysql ga koristi i to vrlo rado...

@dinke
da li to nece prikazati za zadnjih nedelju dana vec globalno

dinke
20. 11. 2006., 16:15
Well, nisam znao da hoce samo za zadnju sednicu, posto nije ni pominjao date polje u tabeli :)


Imam bazu, tabela Vijesti i u njoj polja ID, Naslov, Sadrzaj, Broj_Pregleda

Broj pregleda je number field, i tu se upisuje broj citanja nekih vijesti, e sad bi trebao top 5 naslova , tj koji imaju najvise citanja ...

Elem, ako hoce za poslednjih 7 dana, pod pretpostavkom da ima date_field polje u tabeli koje sadrzi mysql date format samo doda to u where, dakle nesto tipa:


select ID, Naslov, Sadrzaj, Broj_Pregleda
from Vijesti
where date_field>=date_sub(current_date(), interval 7 day)
order by br_pregleda desc limit 5

cvele
20. 11. 2006., 16:21
sve u svemu iscitaj lepo
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

Tu ti je sve sto ti treba vezano za vremena u mysql.

Sto se tice ogranicavanja to smo ti svi vec rekli LIMIT u kombinaciji sa sort by

(top() je koliko sam nasao neka izmisljotina za access... mislim da negresim, google mi rekao)

Petar Marić
20. 11. 2006., 16:40
TOP se u MS SQL koristi umesto LIMIT. Mada, valja napomenuti da TOP podržava definisanje samo gornje granice, a ne i donje :(

degojs
20. 11. 2006., 16:51
cvele
sta ti je cudno kod SET ? mysql ga koristi i to vrlo rado...

Samo što taj SET o kom ti pričaš nije baš isti kao ono što je čovek napisao. Ovo gore je primer VB koda (ili VBScript), verovatno stari ASP.

I pošto primer koristi TOP, onda je verovatno u pitanju MS SQL (možda i Access, ne sećam se više :-).

LIMIT ne radi tamo, tako da su rešenja do sada neupotrebljiva (osim ako se ne prebacuje na MySQL).

Ako koristi MSSQL onda može da koristi SET ROWCOUNT. Ima još rešenja, a MSSQL2005 podržava ROW_NUMBER().

P.S.
DevProTalk, please !!!! :)

BraMom
20. 11. 2006., 16:54
@Cvele


Set RS_Najcitaniji= Conn.Execute("SELECT top 5 * FROM Vijesti Order by Broj_Pregleda Desc")

SET nije u upitu, već u nekakvom programskom jeziku koji koristi Ministar, a meni ovo najviše liči na klasika ASP. A kako i upit nije validan u mySQL-u, zaključio sam da čovek koristi MSSQL ili Access, pa sam zato i pitao koju bazu koristi.

[@degojs eh nisam video poruku, tj. postovao si dok sam pisao :)]

degojs
20. 11. 2006., 16:57
TOP se u MS SQL koristi umesto LIMIT. Mada, valja napomenuti da TOP podržava definisanje samo gornje granice, a ne i donje :(

Čisto kao informacija, jedno od rešenja jeste kombinacija TOP i SET ROWCOUNT da bi se dobilo famozno deljenje po stranicama u MSSQL 2000.

oliver78
20. 11. 2006., 20:44
Mislim da njemu ne treba poslednja 5 unosa, vec 5 kojima je najcesce pristupano.

cvele
21. 11. 2006., 00:00
Čisto kao informacija, jedno od rešenja jeste kombinacija TOP i SET ROWCOUNT da bi se dobilo famozno deljenje po stranicama u MSSQL 2000.


Vidis set rowcount... za to sam bio ubedjen da je glupost koja je exluzivana za sybase. (duboko razocaran)

Za SET.. my bad.. nisam ni video to u njegovom query-u... neko sam mislio da je jos neko dao neki primer pa da je izbrisao post posto si ti odgovorio...

Dejan Topalovic
21. 11. 2006., 11:14
Hm, zar ne bi tema trebala u podforum SQL i baze podataka? Osim toga, autor teme nije rekao o kojoj je bazi rijec...

dinke
21. 11. 2006., 11:29
Premesteno. Nadam se da ce se autor (Ministar) udostojiti da se javi i kaze o kojoj se bazi radi.

Ministar
23. 11. 2006., 11:06
Radi se o obicnom asp i access bazi