Novo

Forum kao aplikacija na telefonu

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

  • 10 odgovora
  • 9.256 pregleda

Najnovija ↓

kako dodati redni broj reda u rezultate SQL upita? 12.02.2005. u 16:29 · pre 264 meseca #1
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.
Potpis
No signature...
Re: kako dodati redni broj reda u rezultate SQL upita? 12.02.2005. u 17:25 · pre 264 meseca #2
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...
Potpis
Vidi: GoranVuc #4934
Re: kako dodati redni broj reda u rezultate SQL upita? 13.02.2005. u 16:58 · pre 264 meseca #3
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...
Potpis
No signature...
Re: kako dodati redni broj reda u rezultate SQL upita? 13.02.2005. u 19:33 · pre 264 meseca #4
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
Re: kako dodati redni broj reda u rezultate SQL upita? 14.02.2005. u 10:35 · pre 264 meseca #6
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...
Potpis
No signature...
Re: kako dodati redni broj reda u rezultate SQL upita? 12.12.2005. u 14:05 · pre 254 meseca #9
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.
Re: kako dodati redni broj reda u rezultate SQL upita? 13.12.2005. u 00:25 · pre 254 meseca #11
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!


Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme