[ DV Lord of Emty Space @ 12.02.2005. 17:47 ] @
| Imam tabelu kupci koja sadrzi NazivKupca, PIB (Kupca),Ziroracun1,Ziroracun2,Ziroracun3,ZiroRacun4
, Itabelu Izdata roba koja ima PIB (Kupca),Kolicina,Cena I tabelu Uplate kupaca po racunima koja sadrzi BrojTekuceg(racuna),DatumUplate,IznosUplate
Kreirao sam query koji izracunava sumu prodate robe po kupcu QueryUkupnaSumaIzdateRobePoKupcuVP a kao medjukorak query koj selektuje brojeve racuna koji su uplatili I redja ih po pib-u QueryZbirTekucihRacunaKupaca (mozda to moze u jednom query-ju) a zatim query koji racuna koliko kupac je uplatio po kom racunu a vezano za PIB kao jedinstven broj kojji se ne ponavlja QueryUplateKupacaPoPIBu (u kome prikazuje samo kupce koj su uplatili).
Zatim sam kreirao query QueryUkupnaDugovanjaKupacaVP koji racuna dugovanja kupaca na osnovu SumOfIznosUplate I SumOfIznosIzdateRobe koristeci izraz QtyDiff .
Posto jedan isti kupac moze sa vise razlicitih racuna da uplati robu potrebno mi je da znam koji je sa kog racuna uplatio I koji iznos (to mi nije problem) .Medjutim problem je kada u query ne dobijam rezultate kupaca koji su samo uzeli robu a nisu je uplatili, vec pokazuje samo iznos za kupce koji su uplatili .TO MI TREBA ZBOG SALDA KUPACA QueryUkupnaDugovanjaKupacaVP .
Pretpostavljam da u query treba dodati null za racune sa kojih nije bilo uplate ali mi ne polazi za rukom da to izvedem .U pitanju je access 2003.Ima li neko resenje.
Sa postovanjem
DV
|
[ programer @ 14.05.2007. 14:51 ] @
Evo malo zakasneli odgovor, ne znam da li sam razumeo tvoje pitanje ali opisacu ti jedan problem koji sam imao, a u pitanju je JOIN naredba koja moze da bude INNER JOIN, LEFT JOIN i RIGHT JOIN. Recimo da imas dve tabele, ili dva query-ja iz tih tabela:
1. uplate kupaca, upisujes:
datum uplate
broj izvoda
sifru kupca
broj fakture na koju se kupac pozvao
iznos uplate
ovde napravis query koji selektuje sum(uplata) group by broj_fakture jer se desava da po istoj fakturi imas nekoliko uplata, na nekoliko izvoda
2. zaduzenja kupaca
datum racuna
broj racuna
sifru kupca
vrednost racuna
Treba ti sada query koji ce dati spisak svih faktura bez obzira da li su placene ili ne, ali ako jesu da u jednoj od kolona bude ukupno uplacena suma po toj fakturi kao i iznos koliko ostaje za uplatu:
---BROJ_RACUNA---DATUM_RACUNA---IZNOS_ZADUZENJA----IZNOS_UPLATE-------RAZLIKA
=====================================================================
-----1-------------01.01.2007-------------100,00-------------100,00---------------0,00
-----2-------------10.01.2004-------------200,00---------------0,00-------------200,00
-----3-------------20.01.2007-------------150,00--------------75,00--------------75,00
crtice su jer mi editor za poruke pojede blankove pa se ne poklapaju kolone...
Vidis da prva i treca faktura imaju slogove u tabeli uplata, prva je isplacena cela, treca delimicno. Faktura broj dva ima slog samo u tabeli zaduzenja, a NEMA slog u tabeli uplata. Ako ovo uradis sa (INNER) JOIN naredbom ove dve tabele neces u rezultatu dobiti fatkuru broj 2, ali ako napises "LEFT JOIN" (ili RIGHT, zavisi kojim redom si naveo tabele), dobices ovaj red u rezultatu ali umesto 0,00 kao iznosa uplate dobices NULL vrednost jer racun broj 2 nema sloga u uplatama, pa treba da u delu SELECT-a (za poslednje dve kolone u tabeli rezultata) umesto:
..., uplata.iznos as iznos_uplate, zaduzenja.iznos - uplata.iznos as razlika
ubacis:
..., iif(isnull(uplata.iznos)=true,0,uplata.iznos) as iznos_uplate, zaduzenja.iznos - if(isnull(uplata.iznos)=true,0,uplata.iznos) as razlika
Ovo ce ti korigovati NULL vrednost na 0,00. Funkcija IIF ima tri argumenta odvojena zarezom: prvi je uslov, drugi je vrednost koju funkcija vraca ako je on ispunjen, treci je vrednost ako uslov nije ispunjen.
Ne znam da li je ovo problem koji si imao, ali potice od vremena kada sam ja ucio access... imao sam listu kupaca od kojih neki imaju upisan ptt broj, recimo "11000" (iz pomocnog sifarnika ptt brojeva se izvadi da je to Beograd i tako ide na listu), a neki kupci nemaju. Kada uradim JOIN dve tabele KUPCI i PTT po sifri PTT, nema onih bez PTT broja ali ako stavim LEFT JOIN izadju na listu svi. Kada povuces misem linju izmedju dve tabele od sifre ptt u jednoj do sifre ptt u drugoj, klikni desnim klikom na tu liniju u imaces tri opcije za prikaz samo povezanih polja ili svih slogova jedne ili svih slogova druge tabele... i to ce ti automatski pretvoriti i left, right ili inner join.
[ Brz_na_tastaturi @ 15.05.2007. 22:38 ] @
Ovo povezivanje možeš da izvedeš i mišem, tj klikom na liniju (strelicu) koja povezuje odgovarajuća polja (ključeve) iz dve tabele i tu imaš opcije koje izgledaju otprilike ovako:
1 Prikazi slogove koji su u obe tabele
2 Prikazi sve slogove iz leve tabele i odgovarajuće slogove iz desne tabele
3 Prikazi sve slogove iz desne tabele i odgovarajuće slogove iz leve tabele
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.