|
[ XGhost @ 17.04.2013. 08:47 ] @
| Trebam dobiti rezultat slijedeci
datum ulaz izlaz ukupno stanje
01.01.2013 10 5 5
02.01.2013 10 0 15
03.01.2013 10 0 25
Stavim SQL upit
select datum, sum(ulaz), sum(izlaz),sum(ulaz)-sum(izlaz) from baza
group by datum order by datum
i dobijem slijedeci rezultat
datum ulaz izlaz ukupno stanje
01.01.2013 10 5 5
02.01.2013 10 0 10
03.01.2013 10 0 10
Dakle imam ukupno stanje samo po datumu a zbirno za taj dan
sta bih trebao upisati da dobiem ispravan rezultat tnx |
[ mret @ 17.04.2013. 08:53 ] @
Citat: XGhost: Trebam dobiti rezultat slijedeci
select datum, sum(ulaz), sum(izlaz),sum(ulaz)-sum(izlaz) from baza
group by datum
i dobijem slijedeci rezultat
datum ulaz izlaz ukupno stanje
01.01.2013 10 5 5
02.01.2013 10 0 10
03.01.2013 10 0 10
Posto tebi treba kumulativ po danima (a ne prost sum), probaj ovo da uradis:
set @UKUPNO:=0;
select datum, sum(ulaz), sum(izlaz),(set @UKUPNO:=@UKUPNO+sum(ulaz)-sum(izlaz))
from baza
group by datum;
ovako nesto bi trebalo da prodje, mi u nasem softveru sve tako kumulisemo kroz "jedan prolaz".
Da li je resenje srecno ili nije, ne znam, ali radi posao za nase potrebe.
[ XGhost @ 17.04.2013. 09:00 ] @
kad upisem upit
set @UKUPNO:=0;
select datum, sum(ulaz), sum(izlaz),(set @UKUPNO:=@UKUPNO+sum(ulaz)-sum(izlaz))
from baza
group by datum;
dobijem slijedecu gresku
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''set @UKUPNO:=0;'0' at line 1
[ Shinhan @ 17.04.2013. 11:33 ] @
Kako upisuješ upit?
CLI, phpMyAdmin, MySQL workbench, PHP...
Ako je recimo PHP, onda ta dva querija moraš posebno poslati (prvo set, pa onda posebno select). Verovatno i u drugim programskim jezicima moraš querije posebno slati.
[ XGhost @ 17.04.2013. 11:42 ] @
Pokusavam dobiti rezultat u navcat-u (manager za mysql) u queryeditor-u
[ djoka_l @ 17.04.2013. 11:42 ] @
Ključna fraza je running total.
Može i bez pomoćne varijable:
Code (sql):
SELECT t1.datum, SUM(t1.ulaz) ulaz, SUM(t1.izlaz) izlaz, SUM(t2.ulaz)-SUM(t2.izlaz) saldo
FROM baza t1, baza t2
WHERE t2.datum <= t1.datum
GROUP BY t1.datum
[ XGhost @ 17.04.2013. 11:55 ] @
sad sam dobio rezultat
datum ulaz izlaz ukupno stanje
01.01.2013 10 5 5
02.01.2013 20 0 15
03.01.2013 30 0 25
stanje je tacno ali mi nije tacno polje ulaz
[ djoka_l @ 17.04.2013. 12:05 ] @
Uh ti si pustio onaj moj upit, pa si dobio glupost? Nisam dobro napisao, mora da ide sa onim SET. Druga, bolja opcija je da running sum računaš u tvom programu, a ne u upitu.
[ mret @ 17.04.2013. 12:20 ] @
Mislim da moze i bez SET u upitu, ovo bi trebalo da radi. Ako nece posalji CREATE i INSERT script za tu tvoju tabelu, lakse cemo resiti.
set @UKUPNO:=0;
select datum, sum(ulaz), sum(izlaz),(/*SET */@UKUPNO:=@UKUPNO+sum(ulaz)-sum(izlaz))
from baza
group by datum;
[ farmaceut @ 17.04.2013. 13:05 ] @
evo u jednoj liniji (samo malo proguglas...), primjer je nad nekom mojom prometnom tabelom, ali ces lako skuziti:
Code:
SELECT datum, ulaz, izlaz, @kumulativno:=@kumulativno + saldo
FROM (
SELECT date(datum) as datum, SUM(kulaz) AS ulaz, SUM(kizlaz) AS izlaz, SUM(kulaz-kizlaz) AS saldo
FROM detalji_podaci
WHERE skladiste_grupa = 1221
AND id_proizvoda = 7
GROUP BY date(datum)
ORDER BY date(datum)
) AS tmp
JOIN (SELECT @kumulativno:=0) as kum_tmp
Mozda moze i bez ovog podupita, ali nisam dalje trazio.
[ XGhost @ 17.04.2013. 14:34 ] @
ne prolazi ni ovo iznad pored svih varijanti uvijek dobijem poruku
[Err] 1054 - Unknown column 'kulaz' in 'field list'
[ farmaceut @ 17.04.2013. 18:29 ] @
Lijepo kazem da je to nad mojom prometnom tabelom, gdje ja imam kolonu "kulaz", nisam mislio da ces samo copy/paste vec da ces skuziti koncept....
(Stavi u buduce create/insert skriptu, da mozemo probati nad tvojom strukturom baze i testnim podacima...)
Evo ovako, sa "strukturom" koju si stavio u prvom postu, trebalo bi raditi:
Code:
SELECT datum, ulaz, izlaz, @kumulativno:=@kumulativno + saldo AS kumulativni_saldo
FROM (
SELECT datum as datum, SUM(ulaz) AS ulaz, SUM(izlaz) AS izlaz, SUM(ulaz-izlaz) AS saldo
FROM baza
GROUP BY datum
ORDER BY datum
) AS tmp
JOIN (SELECT @kumulativno:=0) as kum_tmp
[ XGhost @ 17.04.2013. 18:42 ] @
Funkcionira :)
Hvala druze na nesebicnoj pomoci
i ostalima koji su htjeli pomoci
[Ovu poruku je menjao XGhost dana 17.04.2013. u 20:20 GMT+1]
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|