[ anakin14 @ 05.01.2011. 02:10 ] @
tebele su

ROBA - pozicija nabavke i rad


imam upit:


Code:
 SELECT roba.[sifra robe], Sum([pozicija nabavke].kolicina) AS nabavka, Sum(rad.repro) AS prodaja, [nabavka]+[prodaja] AS stanje
FROM (roba INNER JOIN [pozicija nabavke] ON roba.[sifra robe]=[pozicija nabavke].[sifra robe]) INNER JOIN rad ON roba.[sifra robe]=rad.[sifra robe]
GROUP BY roba.[sifra robe];


e sad, ukoliko nemam recorde u tabelama rad i pozicija nabavke query mi vraca praznu tabelu.
kako da uradim query da mi tada vraca nule?

sifra robe nabavka prodaja stanje
1 0 0 0
2...

a da pritom izlista sve vrednosti sifra robe iz tabele roba ( ne samo one koje se pojavljuju u tabelama rad i pozicija nabavke)
- inace kada imam samo nabavku a ne prodaju takodje mi vraca praznu tabelu.

kako da resim ovo?
unapred zahvalan!!!
[ Zoran.Eremija @ 05.01.2011. 07:18 ] @
SELECT roba.[sifra robe], Sum(Nz([pozicija nabavke].kolicina)) AS Nabavka, Sum(Nz([repro])) AS prodaja, Nz([nabavka]+[prodaja]) AS stanje
FROM (roba LEFT JOIN [pozicija nabavke] ON roba.[sifra robe] = [pozicija nabavke].[sifra robe]) LEFT JOIN rad ON roba.[sifra robe] = rad.[sifra robe]
GROUP BY roba.[sifra robe];

LEFT JOIN cini sve, kao i Nz funkcija

Takodje ako vec koristite relacioni model (Access) koristite njegove blagodeti "veze", kao i primarne kljuceve...
[ anakin14 @ 05.01.2011. 12:09 ] @
hvala puno!!!
[ anakin14 @ 05.01.2011. 13:58 ] @
a kako da izvedem ovo?

Code:
SELECT roba.[sifra robe], Max([roba cenovnik].datum) AS datum, First([roba cenovnik].cenabezpdv) AS FirstOfcenabezpdv
FROM roba LEFT JOIN [roba cenovnik] ON roba.[sifra robe]=[roba cenovnik].[sifra robe]
WHERE [roba cenovnik].[sifra klijenta]=2
GROUP BY roba.[sifra robe];


znaci ne treba mi First([roba cenovnik].cenabezpdv) nego mi treba bas onaj koji je u tabeli roba cenovnik u polju gde je za datu sifru robe maksimalni datum.
pokusao sam bez ovog first i prijavljuje gresku.
[ captPicard @ 05.01.2011. 14:15 ] @
dodaj ovako nekako:

Code:
and datum = (select max(datum) from tablica)
[ anakin14 @ 05.01.2011. 14:26 ] @
ali ne treba mi max datum nego max datum za sifru robe.
znaci imamo

sifra robe datum
1 1/1
1 1/2
1 1/3
2 1/2
2 1/4
2 1/6
3 1/6
3 1/8
3 1/9

max datum ce da vrati 1/9
a meni za sifru robe 1 treba max datum 1/3

[ SLOJ.1973 @ 05.01.2011. 19:13 ] @
Potrebno je da napraviš dva upita,prvi sa svim poljima Group by:
Code:
SELECT [roba cenovnik].[sifra robe], [roba cenovnik].datum, [roba cenovnik].cenabezpdv, [roba cenovnik].[sifra klijenta]
FROM [roba cenovnik]
GROUP BY [roba cenovnik].[sifra robe], [roba cenovnik].datum, [roba cenovnik].cenabezpdv, [roba cenovnik].[sifra klijenta]
ORDER BY [roba cenovnik].[sifra robe], [roba cenovnik].datum;
, a drugi zasnovan na prvom sa sledećim kriterijumima:
Code:
SELECT Query1.[sifra robe], Last(Query1.cenabezpdv) AS LastOfcenabezpdv, Query1.[sifra klijenta]
FROM Query1
GROUP BY Query1.[sifra robe], Query1.[sifra klijenta]
HAVING (((Query1.[sifra klijenta])=2));
.Da napomenem da sam ovaj odgovor dobio od Getsbi-ja u ovoj temi http://www.elitesecurity.org/t245377-0#1475421