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

redni broj zapisa u upitu

[es] :: Baze podataka :: redni broj zapisa u upitu

[ Pregleda: 3630 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bato.r
Nedeljko Radovic
nezaposlen
Uzice, Srbija

Član broj: 228854
Poruke: 9
93.86.226.*



Profil

icon redni broj zapisa u upitu02.10.2009. u 12:36 - pre 177 meseci
Vidim da je tema stara ali ja imam problem koji ne mogu da resim pa vas molim za pomoc. Sva resenja koja sam do sada pronasao vezuju se za jednu kolonu iz upita i u odnosu na nju se ispisuju redni brojevi. Moj upit je obradjen po vise kriterijuma pa mi to resenje ne odgovara. Evo primera iz tabele "kupci" koristim kolone "IDkupca", "grad", "ime". Upit je sortiran tako da su gruisani i sortirani podaci po gradovima a zatim po imenima (kao u prilogu)

IDkupac| grad | ime

5|Beograd | Aleksandar
2|Beograd | Borivoje
4|Beograd | Milos
1|Beograd | Slavisa
3|Valjevo | Branka
6|Valjevo | Nikola

i na ovakav upit trebaju mi redni brojevi zapisa. Ima li nacina da se to uradi. Ako neko ima resenje pomagajte i hvala
 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: redni broj zapisa u upitu02.10.2009. u 13:23 - pre 177 meseci
Code:
SELECT COUNT(*) Rednibroj, tablica1.id_kupac,tablica1.grad, tablica1.ime
FROM tablica tablica1, tablica tablica2
WHERE tablica1.id_kupac >= tablica2.id_kupac
GROUP BY tablica1.grad, tablica1.ime, tablica1.id_kupac
ORDER BY 1


malo sam razmislio, ipak ne može ovako
F
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: redni broj zapisa u upitu02.10.2009. u 13:46 - pre 177 meseci
Ovo što tebi treba naziva se "Running sum" na engleskom.
Evo upita na Goole da dobiješ informacije: http://www.google.com/search?q=sql+running+sum

Kao što lepo piše na prvom linku koji se dobije od Gugla: Displaying running totals is a common request, and there is no straightforward way to do so in SQL.
A na drugom mestu čovek lepo kaže: SQL was not designed with this capability in mind.

Ono što može da se uradi je da se uradi join slično kao što je captPicard napisao:

Code:

select count(k1.idkupac) RB,  k1.IDkupac, k1.grad, k1.ime
from kupci k1, kupci k2
where k1.grad < k2.grad
   or (k1.grad = k2.grad and k1.ime < k2.ime)
   or (k1.grad = k2.grad and k1.ime = k2.ime and k1.idkupca < k2.idkupca)
group by k1.grad, k1.ime, k1.idkupca
order by k1.grad, k1.ime, k1.idkupca


Razni dijalekti SQLa imaju bolja rešenje (RANK funkcije), ali je ovo bolje da se uradi na drugačiji način, na primer skoro svaki reporting tool ima u sebi running sum.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: redni broj zapisa u upitu02.10.2009. u 14:17 - pre 177 meseci
Ispravka prethodnog koda: treba zameniti "<" sa ">".
Evo kompletnog koda za testiranje:

Code:
CREATE table "KUPCI" (
    "IDKUPCA"    NUMBER NOT NULL,
    "GRAD"       VARCHAR2(40) NOT NULL,
    "IME"        VARCHAR2(255) NOT NULL
);

insert into kupci values (5,'Beograd', 'Aleksandar');
insert into kupci values (2, 'Beograd', 'Borivoje');
insert into kupci values (4, 'Beograd', 'Milos');
insert into kupci values (1, 'Beograd', 'Slavisa');
insert into kupci values (3, 'Valjevo', 'Branka');
insert into kupci values (6, 'Valjevo', 'Nikola');

select count(k1.idkupca) RB, k1.IDkupca, k1.grad, k1.ime
  from kupci k1, kupci k2
 where k1.grad > k2.grad
    or (k1.grad = k2.grad and k1.ime > k2.ime)
    or (k1.grad = k2.grad and k1.ime = k2.ime and k1.idkupca > k2.idkupca)
    or (k1.grad = k2.grad and k1.ime = k2.ime and k1.idkupca = k2.idkupca)
 group by k1.grad, k1.ime, k1.idkupca
 order by k1.grad, k1.ime, k1.idkupca;
 
RB  IDKUPCA GRAD    IME
1   5       Beograd Aleksandar
2   2       Beograd Borivoje
3   4       Beograd Milos
4   1       Beograd Slavisa
5   3       Valjevo Branka
6   6       Valjevo Nikola
 
Odgovor na temu

bato.r
Nedeljko Radovic
nezaposlen
Uzice, Srbija

Član broj: 228854
Poruke: 9
93.86.229.*



Profil

icon Re: redni broj zapisa u upitu03.10.2009. u 23:20 - pre 177 meseci
Hvala djoka_i radi sve super, mnogo si mi pomogao a nadam se da će i drugim kolegamo ovo biti od koristi.
 
Odgovor na temu

[es] :: Baze podataka :: redni broj zapisa u upitu

[ Pregleda: 3630 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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