[ bokini @ 18.08.2003. 16:39 ] @
Pozdrav

Imam tabelu koja prikazuje promene nekog artikla:
id INT AUTOINCREMENT
opis CHAR(16)
ulaz DOUBLE
izlaz DOUBLE

Zanima me kako da dobijem sledeci rezultat pomocu jednog upita (sa ili bez podupita):
-------------------------------------------------------
opis..................ulaz.......................izlaz..................saldo
-------------------------------------------------------
doc 1.................12.......................0........................12
doc 2.................0.........................3........................9
doc 3.................5.........................0.......................14
doc 4..................0.........................8.......................6
doc 5..................1.........................0.......................7

Dakle potreban mi klasican prikaz promena nekog artikla (tzv. kartice)
Bez problema prikazem prve 3 kolone, ali ne znam kako da prikazem saldo kolonu.
Kolona saldo se racuna(ako neko nezna): saldo iz prethodnog reda + (ulaz - izlaz)

Napomena:

Pozdrav i hvala
Bojan
[ byTer @ 18.08.2003. 17:08 ] @
Probaj da ti ta cetvrta kolona bude nesto nalik na:

Code:

SELECT id, opis, ulaz, izlaz, (<sad nekako saberes i konvertujes u integer ili currency - mislim da je sintaksa slicna kao VB CCur(ulaz)+CCur(izlaz) as Saldo)> FROM Tabela1 
WHERE ....
[ alex @ 18.08.2003. 17:09 ] @
Koristi CROSS JOIN:
Code:

select
    a.id,
    a.opis,
    a.ulaz,
    a.izlaz,
    sum(b.ulaz-b.izlaz) as saldo
from
    saldo a cross join saldo b
where
    (b.id <= a.id)
group by a.id, a.ulaz


Izlaz izgleda otprilike ovako:
Code:

+------+------+------+-------+-------+
| id   | opis | ulaz | izlaz | saldo |
+------+------+------+-------+-------+
|    1 | bla  |   20 |     0 |    20 |
|    2 | bla  |    0 |    10 |    10 |
|    3 | bla  |  254 |     0 |   264 |
|    4 | bla  |   12 |     0 |   276 |
|    5 | bla  |    0 |   198 |    78 |
|    6 | bla  |   24 |     0 |   102 |
+------+------+------+-------+-------+


Poz,
alex.
[ bokini @ 18.08.2003. 21:14 ] @
Zdravo Alex

Hvala na odgovoru, ali nazalost MySQL mi javlja da tabela saldo ne postoji.

Da li je potrebno jos nesto pre tvog koda da uradim. U ovom trenutku imam samo jednu tabelu (id, opis, ulaz, izlaz).

Uneo sam podatke u tabelu i poktrenuo upit, ali ne radi :(

Da li je ovo kod za MySQl? Ja se malo slabije razumem u egzoticnije join-e :(

Hvala.
Bojan
[ byTer @ 18.08.2003. 22:42 ] @
Ako nepostoji kao query onda probaj da dodas

SELECT....
INTO Tabela1
FROM itd...

A cross JOin nisam koristio. Kakva je to veza, ALex?
[ alex @ 18.08.2003. 23:32 ] @
Citat:
bokini:
Hvala na odgovoru, ali nazalost MySQL mi javlja da tabela saldo ne postoji.


Hehe, pa naravno da ti javlja da ne postoji jer je to ime tabele koju sam ja koristio u testu. Zameni ime tabele saldo sa imenom tvoje tabele i radice.
[ alex @ 18.08.2003. 23:36 ] @
Citat:
byTer:
A cross JOin nisam koristio. Kakva je to veza, ALex?


CROSS JOIN je najjednostavnija vrsta JOIN komande koja povezuje svaki red u prvoj tabeli sa svim redovima u drugoj tabeli.
[ bokini @ 18.08.2003. 23:38 ] @
Zdravo Alex,

Sada radi, hvala najlepse.

Nisam uopste razumeo deo pored FROM :)

Moracu malo da se pozabavim tim cross joinom

Hvala opet

Bojan
[ dejan @ 26.08.2003. 11:46 ] @
Jel mogu da se nadovezem samo na temu JOIN... Jel moguce nekako da se na mysql query JOINuje samo jedna kolona iz druge tabele, a ne sve?