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

postoji li nesto ovakvo

[es] :: MS SQL :: postoji li nesto ovakvo

[ Pregleda: 2031 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

define

Član broj: 41934
Poruke: 288
213.244.208.*



Profil

icon postoji li nesto ovakvo19.12.2005. u 16:06 - pre 206 meseci
Radim neku scriptu za top listu, i sve radi, ali sada zelim nesto malo dalje da idem
Ono sto hocu je da u tabeli koju imam npr
+--------+-----------+
| sajtid | brklikova |
+--------+-----------+
| 3 | 50 |
| 4 | 49 |
| 8 | 39 |
| 15 | 33 |
| 6 | 31 |
| 7 | 9 |
| 14 | 9 |
| 16 | 9 |
| 1 | 8 |
| 9 | 8 |
| 10 | 5 |
| 11 | 4 |
| 5 | 0 |
| 12 | 0 |
| 13 | 0 |
+--------+-----------+
dodam jos jednu kolonu sa rednim brojem, koji bi bio fiksan tako da od pocetka tabele postoje indexi u toj koloni, tako da bi na trecem mestu bio sajtid 8 a na 4-tom sajtid 15. Ukoliko ovaj sa sajtid-om 15 pretekne ostale on bude u vrhu i nosi vrednost 1.
Ono sto ja hocu je da tu kolonu koja bi se zvala npr broj koristim kao uslov. Znaci kazem "select * from tabela where broj=4" i tako dobijem sajt na 4-tom mestu

Ima li sanse nesto ovakvo da se odradi?
 
Odgovor na temu

Fedya
Fedor Hajdu
Solution Architect
Emaratech
Dubai, UAE

Član broj: 28246
Poruke: 790
*.leased.neobee.net.

Jabber: fedya@elitesecurity.org
Sajt: devtechgroup.com


+34 Profil

icon Re: postoji li nesto ovakvo20.12.2005. u 06:56 - pre 206 meseci
Ako sam dobro shvatio hoces da ti se tabela sama sortira (menja fizicki raspored polja u tabeli). To ne moze tako da se uradi, ali mozes na primer da definises pogled iz te tabele sortiran po koloni 'brlinkova'.

A sto se tice ispisa po broju prvo sto mi pada na pamet je da napises storovanu proceduru koja kao parametar prima mesto koje zelis da vidis pa preko kusora prikazes redni broj zapisa koji te zanima (FETCH ABSOLUTE @Mesto)...
Every hamster has his day.
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+709 Profil

icon Re: postoji li nesto ovakvo20.12.2005. u 08:43 - pre 206 meseci
Da li se pitanje zaista odnosi na MSSQL, pošto vidim da si ga postavio i u forumu za MySQL. Rešenje u ove dve baze se dosta razlikuje...

U MSSQLu, mislim da se najčešće rešava korišćenjem temp tabele sa identity (autoincrement) poljem u koju se prebacuju ključevi iz osnovne tabele po željenom redosledu (u tvom slučaju opadajuće po broju klikova).

Kad imaš tu temp tabelu, jednostavno pokupiš slog sa ključem koji ti treba.

Ako je u pitanju prvi slog, ili prvih nekoliko slogova, zaboravi sve gorenavedeno i koristi TOP.
 
Odgovor na temu

branimir.ts
Beograd

Član broj: 56661
Poruke: 127
*.sezampro.yu.

Sajt: www.geocities.com/brankob..


Profil

icon Re: postoji li nesto ovakvo28.12.2005. u 15:32 - pre 206 meseci

Predpostavimo da imas Tabelu koja se bas tako zove, tj Tabela, i da u njoj imas sledece kolone i podatke :

id klik
---------------
1 8
4 49
5 0
6 31
7 9
8 39
9 8
10 5
11 4
12 0
13 0
14 9
15 52
16 9
---------------

Ukoliko je relativno mala tabela ( ispod 10 000 slogova), mozes slobodno koristiti sledeci query :

Code:

SELECT id, klik,
(select count(id) + 1  from tabela tmp where  tmp.klik > t.klik ) AS rang
FROM tabela AS t
ORDER BY klik DESC;


Rezultat :

id klik rang
---------------------
15 52 1
4 49 2
8 39 3
6 31 4
16 9 5
14 9 5
7 9 5
9 8 8
1 8 8
10 5 10
11 4 11
13 0 12
12 0 12
5 0 12
------------------------

Dalje, mozes pretvoriti ceo query u jednu virtuelnu tabelu, a zatim izdvajati samo one
slogove koji su ti potrebni.

Code:

SELECT * FROM 
( SELECT id, klik,
(select count(id) + 1  from tabela tmp where  tmp.klik > t.klik ) AS rang
FROM tabela AS t
ORDER BY klik DESC ) as vt 
where  rang  <>= x


Pozdrav

 
Odgovor na temu

[es] :: MS SQL :: postoji li nesto ovakvo

[ Pregleda: 2031 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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