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

SQL agregatni problem

[es] :: Baze podataka :: SQL agregatni problem

[ Pregleda: 1080 | Odgovora: 5 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mikelly

Član broj: 16730
Poruke: 304
*.crnagora.net.



Profil

icon SQL agregatni problem15.11.2007. u 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.
15.11.2007. u 12:28 

chachka
Srđan Mijatov
Subotica

Moderator
Član broj: 53780
Poruke: 534
*.simex-su.co.yu.

Sajt: www.baze-podataka.net


Profil

icon Re: SQL agregatni problem15.11.2007. u 12:47
Daj da vidimo šta ti je to padalo na pamet preko subqeryja. Možda i nemože lakše?
"The best code is no code at all." - Zidar
"biggest obstacle to learning SQL is unlearning procedural programming" - Joe Celko
15.11.2007. u 12:47 

Mikelly

Član broj: 16730
Poruke: 304
*.crnagora.net.



Profil

icon Re: SQL agregatni problem15.11.2007. u 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).
15.11.2007. u 14:01 

chachka
Srđan Mijatov
Subotica

Moderator
Član broj: 53780
Poruke: 534
*.simex-su.co.yu.

Sajt: www.baze-podataka.net


Profil

icon Re: SQL agregatni problem15.11.2007. u 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.
"The best code is no code at all." - Zidar
"biggest obstacle to learning SQL is unlearning procedural programming" - Joe Celko
15.11.2007. u 15:26 

Mikelly

Član broj: 16730
Poruke: 304
*.crnagora.net.



Profil

icon Re: SQL agregatni problem16.11.2007. u 10:54
E to mi je trebalo, da vidim kako se ti subqueryji definisu.

Thnks
16.11.2007. u 10:54 

dragancesu
subotica

Član broj: 38340
Poruke: 1440
*.eunet.yu.

Sajt: www.buvljak.rs


Profil

icon Re: SQL agregatni problem18.11.2007. u 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]
Pomozite Micro$oftu u borbi protiv piraterije, poklonite prijatelju Linux
18.11.2007. u 12:18 

[es] :: Baze podataka :: SQL agregatni problem

[ Pregleda: 1080 | Odgovora: 5 ]

Postavi temu Odgovori

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