[ tanjakg81 @ 06.08.2006. 16:37 ] @
Pokusavam da napravim upit nad jednom tabelom i jednim upitom.
Tabela ime polja:Sifra ankete, Sifra agencije i Iznos, a upit: Sifra ankete, Sifra agencije i Uplata.
Sad sam htela da napravim upit koji ce racunati razliku polja Iznos i Uplata i to radi OK za polja za koja imam vrednosti u prethodnom upitu, ali kako da napravim da ako nije bilo ni jedne uplate on da vrednost polja Iznos?
[ chachka @ 06.08.2006. 17:47 ] @
To se postize upotrebom LEFT OUTER JOIN umesto obicnog JOIN. U design view Access upita relaciji izmedju dve tabele (u tvom slucaju tabele i upita) postavis opciju povezivanja pod rednim brojem 2 (include ALL records ...) umesto default opcije 1.

Usput moras proveriti da li je uplata NULL, i ako jeste zameniti je sa 0. To postizes u Acesu sa IIF(Uplata IS NULL, 0, Uplata).


PS:
Da li i dalje stojis iza recenice iz posta Kako povezati ove tabele??
Citat:

... ali htela sam da kazem posto se anketaru isplata za odredjenu, obavljenu, anketu vrsi odjednom, ne u ratama
[ tanjakg81 @ 06.08.2006. 20:11 ] @
Upit (UkupneUplatePoAnketi) nad kojim vrsim drugi upit ima ovaj kod:

Code:

SELECT Ankete.[Sifra ankete], Ankete.[Sifra agencije], Sum(Uplate.[Iznos uplate]) AS Uplata
FROM Ankete LEFT JOIN Uplate ON Ankete.[Sifra ankete]=Uplate.[Sifra ankete]
GROUP BY Ankete.[Sifra ankete], Ankete.[Sifra agencije];


A, nad njim i tabelom Ankete postavljam sledeci upit:
Code:

SELECT Ankete.[Sifra ankete], Ankete.[Sifra agencije], [Iznos]-[Uplata] AS Dug
FROM UkupneUplatePoAnketi RIGHT JOIN Ankete ON UkupneUplatePoAnketi.[Sifra ankete] = Ankete.[Sifra ankete];


Problem jeste u tome sto su neka polja NULL u koloni Uplata...
Ali, gde da ubacim IFF ?

P.S Da stojim iza te recenice (za moj primer), ali to nema veze sa prethodnim.
Ovu su uplate koje agencija vrsi na racun supervizora, ne anketara, ako si iz tog razloga pitao?
A, ako je nesto drugo, primam savete......

Pozdrav
[ goranvuc @ 06.08.2006. 20:25 ] @
Code:

SELECT Ankete.[Sifra ankete], Ankete.[Sifra agencije], IIF(ISNULL(Iznos), 0, Iznos)-Uplata AS Dug
FROM UkupneUplatePoAnketi RIGHT JOIN Ankete ON UkupneUplatePoAnketi.[Sifra ankete] = Ankete.[Sifra ankete];


Bilo je vec dosta topika na ovu temu, u svakom slucaju kada imas aritmeticke izraze u kojima neki od clanova moze biti Null moras obezbediti 0 na gore opisan nacin. Za MS SQL Server koristi ISNULL(Iznos, 0), a za ostale DBMS ne znam.
Vidim da napredujes, ali brze ce ti ici ako prestanes da koristis u Access-u Design View pri kreiranju SQL upita, vec pocni da koristis SQL View (Kako znam da koristis? Vidi se po RIGHT JOIN da si ga vizuelno sastavila). Ako ces ovim da se zanimas u buducnosti, trebalo bi kucanje SQL izraza da ti bude "pod prstima" - koristenjem vizuelnih dizajnera neces puno nauciti.
[ tanjakg81 @ 06.08.2006. 21:28 ] @
Hvala, Gorane!

To mi je trebalo.Sad je sve kao sto sam htela!

U pravu si. Problem je sto sam prvo ucila sintaksu SQL-a pod Oraclom, pa kad sam pocela Access vidim da se razlikuju, na primer pre sam za spoljasnje spajanje koristila "+", a sad to ne vazi!. Posle sam malo radila SQL Server za diplomski, pa opet nesto novo...sad se opet vracam Accessu, ali tesko mi ide sa ovim promenama...
Mada mi je mnogo lakse da otkucam upit u SQL View nego da koristim Design View, ali skoro uvek mi se potkrade sintaksna greska.
Koliko treba jednom pocetniku da se uhoda u sve ovo?!


Pozdrav!
[ chachka @ 06.08.2006. 22:02 ] @
Citat:
tanjakg81: Ovu su uplate koje agencija vrsi na racun supervizora, ne anketara, ako si iz tog razloga pitao?

Onda nista
[ goranvuc @ 06.08.2006. 22:59 ] @
Citat:

Mada mi je mnogo lakse da otkucam upit u SQL View nego da koristim Design View, ali skoro uvek mi se potkrade sintaksna greska.
Koliko treba jednom pocetniku da se uhoda u sve ovo?!


Mislim da vise nisi pocetnik ;) Svakom se manje - vise potkradaju sintaksne greske. Samo napred!