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

Molim pomoc sum()

[es] :: MySQL :: Molim pomoc sum()

[ Pregleda: 1557 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

DankoH
Danijel Skok

Član broj: 55253
Poruke: 80
*.adsl.net.t-com.hr.



+1 Profil

icon Molim pomoc sum()26.06.2009. u 18:55 - pre 180 meseci
Pozdrav ljudi!!

Molim pomoć u vezi upita.


SELECT primke.BrojPrimke, primke.Datum, primke.DatumDok, primke.BrojOtpre, " _
& "primke.Valuta, partneri.PNaziv, partneri.Sifra as sifrapartnera, partneri.ulica, partneri.grad, " _
& "aprimke.Kolicina, aprimke.Rabat, partneri.ziro, partneri.Tel, partneri.MB, " _
& "aprimke.NabavnaCijena , artikli.Ime, artikli.TipID, artikli.Mjera, artikli.Sifra, " _
& "(aprimke.NabavnaCijena * aprimke.Kolicina) - ((aprimke.NabavnaCijena * aprimke.Kolicina) * (aprimke.Rabat / 100)) AS ukupno, " _
& "mjera.Naziv, partneri.PNaziv FROM primke INNER JOIN " _
& "aprimke ON primke.Primka_ID = aprimke.Primka_ID INNER JOIN " _
& "partneri ON primke.Partner_ID = partneri.Partner_ID INNER JOIN " _
& "artikli ON aprimke.Artikl_ID = artikli.Artikl_ID INNER JOIN " _
& "mjera ON artikli.mjera = mjera.mjeraID WHERE primke.Primka_ID = " & br


Ovo vadi sve "aprimke" iz "primke" broj 5 recimo, ovako:

primke.Primka_ID = 5
aprimke.Primka_ID = 5, aprimke.Artikl_ID = 100, aprimke.NabavnaCijena = 10.00, .....
aprimke.Primka_ID = 5, aprimke.Artikl_ID = 103, aprimke.NabavnaCijena = 1250.00, .....
aprimke.Primka_ID = 5, aprimke.Artikl_ID = 51561, aprimke.NabavnaCijena = 2.40, .....
itd...



Uz ovo sve trebam i TOTAL od ukupno, dakle :

SUM((aprimke.NabavnaCijena * aprimke.Kolicina) - ((aprimke.NabavnaCijena * aprimke.Kolicina) * (aprimke.Rabat / 100))) as total

ali onda ne dobijem sve recorsetove nego samo prvi i ovaj total.

primke.Primka_ID = 5
aprimke.Primka_ID = 5, aprimke.Artikl_ID = 100, aprimke.NabavnaCijena = 10.00, total, .......

a treba mi

primke.Primka_ID = 5
aprimke.Primka_ID = 5, aprimke.Artikl_ID = 100, aprimke.NabavnaCijena = 10.00, total, .......
aprimke.Primka_ID = 5, aprimke.Artikl_ID = 103, aprimke.NabavnaCijena = 1250.00, total, .......
aprimke.Primka_ID = 5, aprimke.Artikl_ID = 51561, aprimke.NabavnaCijena = 2.40, total, .......
itd...

Kako to izvesti?

Nadam se da ovo ima smisla, ako nema pokusat cu drugacije objesniti.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Molim pomoc sum()26.06.2009. u 23:49 - pre 180 meseci
ne znam koji jezik ima tu odvratnu sintaksu za spajanje stringova ali bi bilo korisno da si napisao samo upit a ne copy paste koda ...

& '' nije deo sql-a :D

elem ..

Code:

SELECT primke.brojprimke,
       primke.datum,
       primke.datumdok,
       primke.brojotpre,
       primke.valuta,
       partneri.pnaziv,
       partneri.sifra AS sifrapartnera,
       partneri.ulica,
       partneri.grad,
       aprimke.kolicina,
       aprimke.rabat,
       partneri.ziro,
       partneri.tel,
       partneri.mb,
       aprimke.nabavnacijena,
       artikli.ime,
       artikli.tipid,
       artikli.mjera,
       artikli.sifra,
       (aprimke.nabavnacijena * aprimke.kolicina) - ((aprimke.nabavnacijena * aprimke.kolicina) * (aprimke.rabat / 100)) AS ukupno,
       mjera.naziv,
       partneri.pnaziv
FROM   primke
       INNER JOIN aprimke
         ON primke.primka_id = aprimke.primka_id
       INNER JOIN partneri
         ON primke.partner_id = partneri.partner_id
       INNER JOIN artikli
         ON aprimke.artikl_id = artikli.artikl_id
       INNER JOIN mjera
         ON artikli.mjera = mjera.mjeraid
WHERE  primke.primka_id = 5;


dakle, fali nam ovde "kraj upita" ... ako tu sada samo dodje neki integer .. to je ok .. dakle podrazumevamo da se zavrsava sa "dodatom" peticom.

Citat:

ali onda ne dobijem sve recorsetove nego samo prvi i ovaj total.


naravno .. tako rade agregacione funkcije ... ne samo u mysql-u vec na svakom postenom db serveru koji postuje sql sintaksu. da ne spomenem da to nema smisla .. dakle .. kako mislis da ti on na petom redu izracuna sumu "svih" ?!?!?

ono sto mozes da dobijes na "foru" ali je problem sto to radi "sad" i pitanje dal ce da radi sa sledecom verzijom (oce sigurno i dosta narednih verzija .. ali to je "side effect" tako da u bilo kom trenutnku moze da prestane da postoji) .. dakle ...

Code:

set @a=0;
SELECT primke.brojprimke,
       primke.datum,
       primke.datumdok,
       primke.brojotpre,
       primke.valuta,
       partneri.pnaziv,
       partneri.sifra AS sifrapartnera,
       partneri.ulica,
       partneri.grad,
       aprimke.kolicina,
       aprimke.rabat,
       partneri.ziro,
       partneri.tel,
       partneri.mb,
       aprimke.nabavnacijena,
       artikli.ime,
       artikli.tipid,
       artikli.mjera,
       artikli.sifra,
       (aprimke.nabavnacijena * aprimke.kolicina) - ((aprimke.nabavnacijena * aprimke.kolicina) * (aprimke.rabat / 100)) AS ukupno,
       mjera.naziv,
       partneri.pnaziv,
       @a := @a+ (aprimke.NabavnaCijena * aprimke.Kolicina) - ((aprimke.NabavnaCijena * aprimke.Kolicina) * (aprimke.Rabat / 100)) as sub_total
FROM   primke
       INNER JOIN aprimke
         ON primke.primka_id = aprimke.primka_id
       INNER JOIN partneri
         ON primke.partner_id = partneri.partner_id
       INNER JOIN artikli
         ON aprimke.artikl_id = artikli.artikl_id
       INNER JOIN mjera
         ON artikli.mjera = mjera.mjeraid
WHERE  primke.primka_id = 5;


obrati paznju da ovde u svakom redu dobijas "total do tog reda" ... tek u poslednjem redu imas "total total"

evo primer:

Code:

mysql> set @a=0; select i,j, @a := @a + i*j as sub_total from b;
Query OK, 0 rows affected (0.00 sec)

+------+------+-----------+
| i    | j    | sub_total |
+------+------+-----------+
|    1 |    2 |         2 | 
|    1 |    2 |         4 | 
|    1 |    2 |         6 | 
|    1 |    2 |         8 | 
|    1 |    2 |        10 | 
|    1 |    2 |        12 | 
|    1 |    2 |        14 | 
|    1 |    2 |        16 | 
+------+------+-----------+
8 rows in set (0.00 sec).

mysql> select sum( i*j) as total from b;
+-------+
| total |
+-------+
|    16 | 
+-------+
1 row in set (0.00 sec)



jasno?
 
Odgovor na temu

[es] :: MySQL :: Molim pomoc sum()

[ Pregleda: 1557 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

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