[ Mikelly @ 15.11.2007. 12:28 ] @
Imam dvije tabele:

jednu sa ulazima gdje se cuva nabavna cijena i kolicina artikala, i
drugu sa izlazima gdje se cuvaju prodajne cijene i kolicine istih artikala.

Konacni cilj mi je da racunam ukupnu zaradu po artiklima.

Hocu dakle da dobijem tabelu koja mi kao jedno polje daje ukupno koliko je potroseno za nabavku nekog artikla a u drugom polju koliko je prodato.

Kako sad to da uradim? Podaci se nalaze u dvije odvojene tabele, a ja moram radit agregatni query. Nesto mi je padalo na pamet preko subqeryja ali mozda postoji i lakse rjesenje? Molim za pomoc.

Pozdrav.
[ chachka @ 15.11.2007. 12:47 ] @
Daj da vidimo šta ti je to padalo na pamet preko subqeryja. Možda i nemože lakše?
[ Mikelly @ 15.11.2007. 14:01 ] @
evo nesto nabrzaka:

prva tabela, tabela ARTIKLI:
SIFRA, NAZIV

druga tabela, tabela ULAZI:
ID, ARTIKAL, CIJENA, KOLICINA

treca tabela, tabela IZLAZI:
ID, ARTIKAL, CIJENA, KOLICINA

relacija:
SIFRA-->ARTIKAL

napravio sam u accessu, ali mi treba kompletan sql izraz, koji ne mogu vidjet u accessu. Naime:

Query1:

SELECT ARTIKLI.Sifra, Sum([ULAZI].[KOLICINA]*[ULAZI].[CIJENA]) AS Sum1
FROM ARTIKLI INNER JOIN ULAZI ON ARTIKLI.SIFRA = ULAZI.ARTIKAL GROUP BY ARTIKLI.SIFRA;

Query2:

SELECT ARTIKLI.Sifra, Sum([IZLAZI].[KOLICINA]*[IZLAZI].[CIJENA]) AS Sum2
FROM ARTIKLI INNER JOIN IZLAZI ON ARTIKLI.SIFRA = IZLAZI.ARTIKAL GROUP BY ARTIKLI.SIFRA;

I konacno:

SELECT Query1.Sifra, Query1.Sum1, Query2.Sum2 FROM Query1 INNER JOIN Query2 ON Query1.Sifra = Query2.Sifra

I to je to sto trazim.

Ali stvarno ne znam kako ovo napisat kao cjelokupan sql izraz, tj. ne znam kako da definisem ove subqueryje unutar zadnjeg izraza... To je cini mi se malo teze (nesto mi access pominje nekakvu EXIST komandu ako subquery vrace vise od jednog polja, ali ne znam ni da li ta komanda postoji van access-a).
[ chachka @ 15.11.2007. 15:26 ] @
To ti je to, samo sve to spojiš u jedan upit i ne treba ti povezivanje sa tabelom Artikli pošto iz nje ništa ne uzimaš:
Code:
SELECT query1.artikal AS sifra, query1.sum1, query2.sum2
  FROM (SELECT artikal, SUM(kolicina*cijena) AS sum1
          FROM ulazi
         GROUP BY artikal
       ) AS query1
       INNER JOIN
       (SELECT artikal, SUM(kolicina*cijena) AS sum2
          FROM izlazi
         GROUP BY artikal
       ) AS query2
         ON query1.artikal = query2.artikal
 ORDER BY query1.artikal;

Ovde je verovatno prikladnije LEFT OUTER JOIN umesto INNER JOIN-a.
[ Mikelly @ 16.11.2007. 10:54 ] @
E to mi je trebalo, da vidim kako se ti subqueryji definisu.

Thnks
[ dragancesu @ 18.11.2007. 12:18 ] @
Eh, sto bi bilo lepo da je to ovako jednostavno.

Jedan upit nije dovoljan. Najtacnija bi bila FIFO varijanta ali to podrazumeva dnevno azuriranje i dosta komplikuje stvar.

Sledeca (priblizna racunica) bi bila prodajna minus prosecna nabavna cena za prodate artikle. Zaradu mozes racunati samo za prodate artikle sto nije uzeto u obzir u predlozenom upitu.

Kod racunice se treba uzeti i porez. Znaci, prvo iz cena izbiti porez pa raditi dalje.


[Ovu poruku je menjao dragancesu dana 18.11.2007. u 19:15 GMT+1]