Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 3.030 pregleda

Najnovija ↓

SQL agregatni problem 15.11.2007. u 13:28 · pre 230 meseci #1
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.
Re: SQL agregatni problem 15.11.2007. u 13:47 · pre 230 meseci #2
Daj da vidimo šta ti je to padalo na pamet preko subqeryja. Možda i nemože lakše?
Potpis
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
Re: SQL agregatni problem 15.11.2007. u 15:01 · pre 230 meseci #3
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).
Re: SQL agregatni problem 15.11.2007. u 16:26 · pre 230 meseci #4
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.
Potpis
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
Re: SQL agregatni problem 16.11.2007. u 11:54 · pre 230 meseci #5
E to mi je trebalo, da vidim kako se ti subqueryji definisu.

Thnks
Re: SQL agregatni problem 18.11.2007. u 13:18 · pre 230 meseci
izmenjeno 1 put, poslednji put dragancesu 18.11.2007. u 19:15
  1. dragancesu18.11.2007. u 19:15zapis iz teksta poruke
#6
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.
Potpis
Pomozite Micro$oftu u borbi protiv piraterije, poklonite prijatelju Linux
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme