[ rokagresor @ 24.09.2012. 11:59 ] @
imam dva upita koja mi izdvajaju slicne drzave (u ovom slucaju sa Srbijom). U prvom upitu se vrsi uporedjenje ukljucujuci prostor Kosova i Metohije a u drugom ne ukljucujuci isti. Poredjenje se vrsi na osnovu slicnosti povrsine teritorije i broja stanovnika. Oba upita rade bey problema i sledeceg su oblika>
PRVI UPIT>
SELECT Države.[Država ID], Države.Površina, Države.[Broj stanovnika], Države.[Sistem kolektivne odbrane], Države.[Aktivni sastav- brojno stanje], [Broj vojnika na km2].[Broj vojnika na km2], Države.[% BDP], Države.[Troškovi odbrane], [Troškovi odbrane].[Troskovi od u int $], [Opterećenje populacije].[Opterećenje populacije], [Izdaci po vojniku].[Izdaci po vojniku u $], [Izdaci po vojniku].[Izdaci po vojniku u int $], [Izdaci po stanovniku].[Izdaci po stanovniku u $], [Izdaci po stanovniku].[Izdaci po stanvoniku u int $], [Struktura troškova].[Personalni troškovi (%)], [Struktura troškova].[Operativni troškovi (%)], [Struktura troškova].[Investicije (%)], [Struktura troškova].[Razlika presonalni], [Struktura troškova].[Razlika operativni], [Struktura troškova].[Razlika investicije]
FROM Države, [Izdaci po vojniku], [Izdaci po stanovniku], [Opterećenje populacije], [Troškovi odbrane], [Srbija bez KiM], [Srbija bez KiM od 10 do 10], [Struktura troškova], [Broj vojnika na km2]
WHERE (((Države.[Država ID]) Not Like "Republika Srbija (sa KiM)" And (Države.[Država ID]) Not Like "Republika Srbija (bez KiM)") AND (((Države.[Broj stanovnika])>[Srbija bez KiM od 10 do 10]![S manje] And (Države.[Broj stanovnika])<[Srbija bez KiM od 10 do 10]![S više]) OR ((Države.Površina)>[Srbija bez KiM od 10 do 10]![P manje] And (Države.Površina)<[Srbija bez KiM od 10 do 10]![P više])) AND (([Troškovi odbrane].[Država ID])=[Države].[Država ID]) AND (([Opterećenje populacije].[Država ID])=[Države].[Država ID]) AND (([Izdaci po stanovniku].[Država ID])=[Države].[Država ID]) AND (([Izdaci po vojniku].[Država ID])=[Države].[Država ID]) AND (([Struktura troškova].[Država ID])=[Države].[Država ID]) AND (([Broj vojnika na km2].[Država ID])=[Države].[Država ID]));
DRUGI UPIT>
SELECT Države.[Država ID], Države.Površina, Države.[Broj stanovnika], Države.[Sistem kolektivne odbrane], Države.[Aktivni sastav- brojno stanje], [Broj vojnika na km2].[Broj vojnika na km2], Države.[% BDP], Države.[Troškovi odbrane], [Troškovi odbrane].[Troskovi od u int $], [Opterećenje populacije].[Opterećenje populacije], [Izdaci po vojniku].[Izdaci po vojniku u $], [Izdaci po vojniku].[Izdaci po vojniku u int $], [Izdaci po stanovniku].[Izdaci po stanovniku u $], [Izdaci po stanovniku].[Izdaci po stanvoniku u int $], [Struktura troškova].[Personalni troškovi (%)], [Struktura troškova].[Operativni troškovi (%)], [Struktura troškova].[Investicije (%)], [Struktura troškova].[Razlika presonalni], [Struktura troškova].[Razlika operativni], [Struktura troškova].[Razlika investicije]
FROM Države, [Izdaci po vojniku], [Izdaci po stanovniku], [Opterećenje populacije], [Troškovi odbrane], [Srbija sa KiM], [Srbija sa KiM od 10 do 10], [Struktura troškova], [Broj vojnika na km2]
WHERE (((Države.[Država ID]) Not Like "Republika Srbija (sa KiM)" And (Države.[Država ID]) Not Like "Republika Srbija (bez KiM)") AND (((Države.[Broj stanovnika])>[Srbija sa KiM od 10 do 10]![S manje] And (Države.[Broj stanovnika])<[Srbija sa KiM od 10 do 10]![S više]) OR ((Države.Površina)>[Srbija sa KiM od 10 do 10]![P manje] And (Države.Površina)<[Srbija sa KiM od 10 do 10]![P više])) AND (([Troškovi odbrane].[Država ID])=[Države].[Država ID]) AND (([Opterećenje populacije].[Država ID])=[Države].[Država ID]) AND (([Izdaci po stanovniku].[Država ID])=[Države].[Država ID]) AND (([Izdaci po vojniku].[Država ID])=[Države].[Država ID]) AND (([Struktura troškova].[Država ID])=[Države].[Država ID]) AND (([Broj vojnika na km2].[Država ID])=[Države].[Država ID]));

Me]utim potreban mi je i upit koji ce da sjedini ova dva i da prikaze sve yemlje koje su slicne bez obzira da li se racuna prostor KiM ili ne. Posto ovi upiti imaju isti broj kolona, iste tipove kao i iste nayive... primenio sam funkciju UNION, te upit izgldea ovako>

SELECT * FROM [Karakteristične države (bez KiM)]
UNION SELECT * FROM [Karakteristične države (sa KiM)]
Medjutima reyultat se dobije dobar za sve kolone osim ya kolone> Troskovi odbrane, Opterecenje populacije i Broj vojnika na KM2... ove kolone ostaju prazne a u nayivu kolone stoji >
[Karakteristične države (bez KiM)].Troškovi odbrane.Troškovi odbrane... i dalje redom isto?

Ima li neko resenje ya moj problem.. bio bih veoma zahvalan.
Unapred hvala
[ Getsbi @ 24.09.2012. 14:24 ] @
Probaj da iza UNION staviš opciju ALL. Ako se koristi ( All ), tada daje sve slogove, bez njega radi Group by po svim poljima.
Podrazumevano stanje UNION upita je da eliminiše duplirane zapise iz rezultata upita unije.
[ rokagresor @ 24.09.2012. 16:24 ] @
ne odgovara mi union all jel on vraca duple zapise... posto ima deo rezultata dve tabele koji su istovetni... tako da meni odgovara da eliminise duple i da ujedini tabelu ali sa svim kolonama..
[ Getsbi @ 24.09.2012. 18:11 ] @
UNION ALL spaja zapise po uparenoj koloni i zadržava duplirane redove.
Code:
SELECT [Prezime] FROM FizickoLice
UNION ALL SELECT  [NazivPravnogLica] FROM PravnoLice
ORDER BY [Prezime];                  

Običan UNION query spaja zapise po uparenim kolonama i po defaultu eliminiše duplirane zapise.
Code:
SELECT [FizickoLiceID],[Prezime],[JMBG] 
FROM FizickoLice
UNION SELECT [PravnoLiceID], [NazivPravnogLica],      [Pib] FROM PravnoLice
ORDER BY [FizickoLiceID];       

Obrati pažnju da li su ti kolone uparene, odnosno da li je redosled takav da se "gađaju" prava sa pravom.
Dakle gađaju se FizickoLiceID i PravnoLiceID, potom Prezime i NazivPravnogLica i na kraju JMBG i Pib.

Savet: Probaj da napišeš novi UNION SELECT tako da navodiš tabele bez SELECT *.