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

kako dodati redni broj reda u rezultate SQL upita?

[es] :: Baze podataka :: kako dodati redni broj reda u rezultate SQL upita?

[ Pregleda: 2597 | Odgovora: 10 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

lenny
Lendak Imre
saradnik, FTN, Novi Sad
NS

Član broj: 3147
Poruke: 68
*.leased.neobee.net.

ICQ: 158238713


Profil

icon kako dodati redni broj reda u rezultate SQL upita?12.02.2005. u 15:29

Izvršim ovaj upit:
Code:
SELECT ime, prezime FROM autori ORDER BY prezime, ime

i dobijem sledeće rezultate:
Code:

Ime|Prezime
Laza|Lazić
Mika|Mikić
Pera|Petrović


Pitanje je sledeće: da li je moguće nekako proširiti gornji upit, da mi da i redni broj svakog reda dobijenog upitom, tj da mi doda dodatnu kolonu, redni broj:

Code:

RedniBroj|Ime|Prezime
1|Laza|Lazić
2|Mika|Mikić
3|Pera|Petrović

Ovo mi treba za složeni izveštaj. Znam da se može programski rešiti, ali me interesuje da li može i SQL da pomogne ovde?

Baza je MS SQL, verzija 7. Mislim da je to manje važno.
No signature...
12.02.2005. u 15:29 

GoranVucicevic
Novi Sad

Član broj: 28045
Poruke: 66
*.dialup.neobee.net.

Sajt: www.clickersoftware.com


Profil

icon Re: kako dodati redni broj reda u rezultate SQL upita?12.02.2005. u 16:25
Moze, ako imas kljuc koji bi u tvom slucaju bio AutorID onda bi resenje bilo
Code:

SELECT (SELECT COUNT(*) FROM autori autoriSUB WHERE autoriSUB.AutorID <= autoriMain.AutorID) AS RB, ime, prezime, AutorID 
FROM autori autoriMain
ORDER BY AutorID, prezime, ime


Naravno, ovo resenje je sporo, jer se prilikom formiranja rezultset-a za svaki slog izvrsava podupit za RB, a isto tako tebi podaci treba da su uredjeni po prezimenu, a ne po ID-, tako da ovo shvati samo kao interesantan primer.

Drugi nacin ti je da ti to vrati stored procedure.
Treci nacin ti je da formiras temporary table koja ce ti vratiti podatke koje trazis...
Vidi: GoranVuc #4934
12.02.2005. u 16:25 

lenny
Lendak Imre
saradnik, FTN, Novi Sad
NS

Član broj: 3147
Poruke: 68
*.leased.neobee.net.

ICQ: 158238713


Profil

icon Re: kako dodati redni broj reda u rezultate SQL upita?13.02.2005. u 15:58
Citat:
GoranVucicevic
Code:

SELECT (
SELECT COUNT(*) FROM autori autoriSUB WHERE autoriSUB.AutorID <= autoriMain.AutorID
) AS RB, ime, prezime, AutorID 
FROM autori autoriMain
ORDER BY AutorID, prezime, ime




Interesantna ideja. Na nesreću meni je potrebno sortiranje po prezimenu, pa mi ova solucija ne rešava problem...

Verovatno ću morati da programski dopunim dataset sa rednim brojem...
No signature...
13.02.2005. u 15:58 

djoca!
Djordje Djokic
Kragujevac

Član broj: 14245
Poruke: 117
*.kg.sbb.co.yu.

ICQ: 323241446


Profil

icon Re: kako dodati redni broj reda u rezultate SQL upita?13.02.2005. u 18:33
Koristi promenljive koje imas u MS SQL-u kao i u recimo MySQL-u.

Da ne lupam napamet posto nemam ovde instaliran MS SQL, ali varijanta npr

set @rank:=0;
select @rank:=@rank+1 as rank, ime, prezime FROM autori ORDER BY prezime, ime

bi bilo u MySQL-u, sad samo vidi sintaksu za MS SQL

13.02.2005. u 18:33 

degojs

Član broj: 4716
Poruke: 5096
*.cpe.net.cable.rogers.com.

Sajt: www.novetehnologije.com


Profil

icon Re: kako dodati redni broj reda u rezultate SQL upita?13.02.2005. u 19:47
Koristi privremenu tabelu u kojoj će prvo polje biti IDENTITY, a u ostala možeš onda samo da staviš primarne ključeve iz potrebnih tabela.
Commercial-Free !!!
13.02.2005. u 19:47 

lenny
Lendak Imre
saradnik, FTN, Novi Sad
NS

Član broj: 3147
Poruke: 68
*.leased.neobee.net.

ICQ: 158238713


Profil

icon Re: kako dodati redni broj reda u rezultate SQL upita?14.02.2005. u 09:35
Citat:
djoca!: Koristi promenljive koje imas u MS SQL-u kao i u recimo MySQL-u.

set @rank:=0;
select @rank:=@rank+1 as rank, ime, prezime FROM autori ORDER BY prezime, ime



(Na svu nesreću,) radi se o MS SQL-u, verzija 7. Probao sam ovako, i dobio poruku o greški, koja mi stavlja na znanje da upit koji menja vrednost promenljive, ne može da se koristi i za izvlačenje podataka iz baze. Znači ili redni broj, ili podaci iz tabele...
No signature...
14.02.2005. u 09:35 

_owl_
Centar - BG

Član broj: 318
Poruke: 990
*.blueisp.co.yu.

Sajt: home.drenik.net/~owl


Profil

icon Re: kako dodati redni broj reda u rezultate SQL upita?14.02.2005. u 14:24
Zar MS SQL nema neku pseudokolonu kaja sluzi upravo toj svrsi??
Owl
14.02.2005. u 14:24 

vujkev
Darko Vujičić
Telekom Srbija AD
Beograd

Član broj: 8072
Poruke: 878
*.telekom.yu.



Profil

icon Re: kako dodati redni broj reda u rezultate SQL upita?12.12.2005. u 10:56
Za Oracle je to ROWNUM pa ne verujem da MS SQL nema nešto slično
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
12.12.2005. u 10:56 

negyxo
Aleksandar Perkuchin
unknown

Član broj: 29751
Poruke: 655
*.sksyu.net.



Profil

icon Re: kako dodati redni broj reda u rezultate SQL upita?12.12.2005. u 13:05
Nazalost SQL Server sve do verzije 2000 nema podrsku za ovako nesto. Praksa je bila da se ide preko privremenih tabela u kombinaciji sa IDENTITY. Tek od vezije 2005 i SQLExpress-a je ubacena funkcija ROW_NUMBER() koja odlicno obavlja posao.

Only Time Will Tell
12.12.2005. u 13:05 

obucina

Član broj: 38191
Poruke: 714
213.244.197.*



Profil

icon Re: kako dodati redni broj reda u rezultate SQL upita?12.12.2005. u 18:13
Ovo mozes da izvedes sa select stored procedurom.
12.12.2005. u 18:13 

Djoks
Djordje Najdanovic
Software Engineering
Herceg Novi

Član broj: 1630
Poruke: 250
*.crnagora.net.



Profil

icon Re: kako dodati redni broj reda u rezultate SQL upita?12.12.2005. u 23:25
Nije skroz jednostavno, ali moze pomoci. Caka je da kreiras virtuelnu tabelu

sa jednom kolonom koja ce biti identity:


CREATE TABLE #statement (

[no] int identity,

person varchar(30),

route varchar(20),

cost decimal(6,2)

)


INSERT INTO #statement (person, route, cost)

SELECT

... tvoj upit


SELECT * FROM #statement


DROP TABLE #statement


Pozdrav!


12.12.2005. u 23:25 

[es] :: Baze podataka :: kako dodati redni broj reda u rezultate SQL upita?

[ Pregleda: 2597 | Odgovora: 10 ]

Postavi temu Odgovori

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