Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Subquery plus subquery

[es] :: MS SQL :: Subquery plus subquery

[ Pregleda: 3804 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Samo polako
BiH

Član broj: 70612
Poruke: 27
*.dlp0.bih.net.ba.



Profil

icon Subquery plus subquery24.10.2005. u 18:07 - pre 196 meseci
Zanima me slijedeće:

ako imam upit tipa:

select s,
(select sum (a) from n1 where sifra=sf.s) as A,
(select sum (a) from n2 where sifra=sf.s) as B,
(select sum (a) from n1 where sifra=sf.s) - (select sum (a) from n2 where sifra=sf.s) as AMB
from sf

da li postoji neki način da se to upita slično slijedećem:

select s,
(select sum (a) from n1 where sifra=sf.s) as A,
(select sum (a) from n2 where sifra=sf.s) as B,
A-B as AMB
from sf

Ovako kako je napisano naravno ne radi...

Koliko sam uspio pretražiti forum o ovom ranije nije bilo riječi...

Ajmo stručnjaci...
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: Subquery plus subquery24.10.2005. u 18:25 - pre 196 meseci
Code:

SELECT s, A, B, (ISNULL(A, 0) - ISNULL(B, 0)) AS AMB 
FROM sf 
LEFT JOIN (SELECT SUM(a) AS A, sifra FROM n1 GROUP BY sifra) AS UpitA ON sf.s = UpitA.sifra 
LEFT JOIN (SELECT SUM(a) AS B, sifra FROM n2 GROUP BY sifra) AS UpitB ON sf.s = UpitB.sifra


Napomena, ISNULL se koristi zato sto A ili B mogu biti NULL. Nadam se da si na ovo mislio.

Inace, ovako napisan upit ti se znatno brze izvrsava.

[Ovu poruku je menjao goranvuc dana 24.10.2005. u 19:26 GMT+1]
 
Odgovor na temu

Samo polako
BiH

Član broj: 70612
Poruke: 27
*.dlp378.bih.net.ba.



Profil

icon Re: Subquery plus subquery24.10.2005. u 20:15 - pre 196 meseci
Hvala na odgovoru, sutra cu da probam pa javim da li sam se snašao...

MISLIO sam na ISNULL (to sam sinoć postavio), a ovaj upit je svakako uprošten od onog koji kod mene radi.
Mislim da bi LEFT JOIN trebao da radi skoro pa duplo brže.
Inače upit za koji mi to treba se odaziva za više od 40 sekundi onako kako je postavljen, što nije zanemarivo...

Pozdrav.

[Ovu poruku je menjao Samo polako dana 24.10.2005. u 21:20 GMT+1]
 
Odgovor na temu

mkaras
Marko Karas
Beograd

Član broj: 66087
Poruke: 427



+19 Profil

icon Re: Subquery plus subquery24.10.2005. u 21:58 - pre 196 meseci
Dana Mon, 24 Oct 2005 19:07:09 CEST, Samo polako napisa:


Citat:

select s,
(select sum (a) from n1 where sifra=sf.s) as A,
(select sum (a) from n2 where sifra=sf.s) as B,
A-B as AMB
from sf


Probaj sa procedurom


declare @a integer
declare @b integer
declare @ab integer

select @a = sum (a) from n1 where sifra=sf.s
select @b = sum (a) from n2 where sifra=sf.s
set @ab = @a - @b
select s,@a as A, @b as B, @ab as AB

Trebalo bi da veoma brzo odradi posao. Sa slicnom procedurom radim neka sumiranja iz osam tabela sa ukupno oko tri miliona zapisa i to na relativno prosecnoj masini ne radi duze od dve tri sekunde.

[Ovu poruku je menjao mkaras dana 24.10.2005. u 23:10 GMT+1]
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: Subquery plus subquery25.10.2005. u 18:39 - pre 196 meseci
I sta si zakljucio?
 
Odgovor na temu

Samo polako
BiH

Član broj: 70612
Poruke: 27
*.dlp112.bih.net.ba.



Profil

icon Re: Subquery plus subquery26.10.2005. u 19:43 - pre 196 meseci
Zaključio sam da sam bolestan, ležim, pijem čajeve itd...

tako da ne zaključujem... dok ne ozdravim...
 
Odgovor na temu

[es] :: MS SQL :: Subquery plus subquery

[ Pregleda: 3804 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.