[ LudoA @ 05.02.2010. 10:14 ] @
Code:

TABELA1
Sifra    Naziv    Kolicina
1    a    10
2    b    20
3    c    30
4    d    40
5    e    50
6    f    60
7    g    70
    

Code:

TABELA2
Sifra    Naziv    Kolicina
1    a    100
1    a    200
3    c    200
3    c    300
4    d    500
4    d    500
4    d    100

Treba mi stanje od TABELA2 - TABELA1 ali da pokazuje sve iz TABELA1 iako te sifre nema u TABELA2
Npr da dobijem ovakav izlaz:
Code:
                                
TABELA3
Sifra    Naziv    Kolicina
1    a    290
2    b    -20
3    c    470
4    d    1060
5    e    -50
6    f    -60
7    g    -70


Radi se o SQL upitu za MS SQL 2005.
Unaprijed hvala!
[ mmix @ 05.02.2010. 10:24 ] @
Mozes UNION pa agregaciju
[ LudoA @ 05.02.2010. 10:43 ] @
Tabele imaju vise kolona i razlicite su, ali su ove 3 kolone iste.
[ mmix @ 05.02.2010. 11:03 ] @
nista te to ne sprecava da uradis union/agg sa ta tri polja, ako ti pride trebaju u konaconm izlazu neke informacije iz neke od tabela uradi left outer rezultata na tu tabelu. Cak ako su svi IDevi u atbeli 1 a uzimas infromacije iz tabele1 mozes i inner join.
[ LudoA @ 05.02.2010. 11:11 ] @
I to bi u ovome primjeru izgledalo... ?
[ HladankaoLed @ 05.02.2010. 11:50 ] @
Code:

SELECT sifra, naziv,
((SELECT ISNULL(SUM(kolicina),0) from dbo.TABELA2 t2 where t2.sifra=t1.sifra) - kolicina ) AS Kolicina

FROM dbo.TABELA1 t1


Jedna napomena pride. Kolona 'naziv' u drugoj tabeli uvej je uparena sa sifrom (1 a, 3 c etc.) sto je cini redundantnom i otvora prostor za nekonzistentnost. Ukoliko je 1 uvek a i 3 uvek c, onda jednostavno izostavi tu kolonu iz druge table. Ukoliko je to ovde sasvim slucajno tako, onda treba jasno da definises relaciju izmedju ove dve tabele i prethodni kod modifikujes u skladu sa tom definicijom.

Pozdrav,
M.