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

Zasto mi ovo ne radi?!

[es] :: Pascal / Delphi / Kylix :: Zasto mi ovo ne radi?!

[ Pregleda: 3162 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MatezYU

Član broj: 4114
Poruke: 1586
*.adanet.co.yu.



+17 Profil

icon Zasto mi ovo ne radi?!12.02.2007. u 10:42 - pre 209 meseci
select count(lbo) as max1 from pacijent where pusenje='D'
union
select count(lbo) as max2 from pacijent where pusenje='N'


stavio sam ovo u ADOQuery1 i vraca mi nazad samo max1 a od max2 nema ni trega.. Inace kada postavim direktno sa ems manager-om upit mysql bazi redovno dobijem rezultat.. Kako mogu da ovo odradim da mi u jednom upitu vrati dva rezultata?
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Zasto mi ovo ne radi?!12.02.2007. u 17:17 - pre 209 meseci
> select count (ID) from partneri where id > 200select count(lbo) as max1 from pacijent where pusenje='D'
> union
> select count(lbo) as max2 from pacijent where pusenje='N'

> stavio sam ovo u ADOQuery1 i vraca mi nazad samo max1 a od max2 nema ni trega.. I

Ne koristim ADO pa ne mogu komentarisati da li je do njega ili ne. Možeš napisati ovako (verovatno je i efikasnije):
Code:

select 
  count(ID)
from 
  pacijent
group by pusenje;


Vidim da si koristio count(ID) i COUNT(LBO), pa ako ti je doista bitno po kom polju se broji, primer može dati neočekivan rezulta.
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.kalik.info.



Profil

icon Re: Zasto mi ovo ne radi?!12.02.2007. u 17:52 - pre 209 meseci
Efikasnije je, dodao bih još atribut "pušenje", čisto da se zna koji rezultat pripada kojem slovu (D,N).
Nije do ADOQueryja, ovo prolazi sto posto.
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

badam

Član broj: 78553
Poruke: 97
217.26.69.*



+2 Profil

icon Re: Zasto mi ovo ne radi?!12.02.2007. u 23:42 - pre 209 meseci
Citat:
MatezYU:
select count(lbo) as max1 from pacijent where pusenje='D'
union
select count(lbo) as max2 from pacijent where pusenje='N'


savkicev način je logičniji, ali ako iz nekog razloga mora da bude sa UNION, pokušaj sa:

Code:
 
select count(lbo) as max1, 0 as max2 from pacijent where pusenje='D' 
union
select 0 as max1, count(lbo) as max2 from pacijent where pusenje='N'


 
Odgovor na temu

Bojan Kopanja
Bojan Kopanja
Senior Web Developer, ZeusSoftware
Stara Pazova

Član broj: 6155
Poruke: 507
80.93.240.*

ICQ: 346697685
Sajt: www.zeussoftware.rs


Profil

icon Re: Zasto mi ovo ne radi?!12.02.2007. u 23:56 - pre 209 meseci
Citat:
savkic: > select count (ID) from partneri where id > 200select count(lbo) as max1 from pacijent where pusenje='D'
> union
> select count(lbo) as max2 from pacijent where pusenje='N'

> stavio sam ovo u ADOQuery1 i vraca mi nazad samo max1 a od max2 nema ni trega.. I

Ne koristim ADO pa ne mogu komentarisati da li je do njega ili ne. Možeš napisati ovako (verovatno je i efikasnije):
Code:

select 
  count(ID)
from 
  pacijent
group by pusenje;


Vidim da si koristio count(ID) i COUNT(LBO), pa ako ti je doista bitno po kom polju se broji, primer može dati neočekivan rezulta.


Ukoliko se radi o Access bazi onda i ako se ubaci u SELECT i "pusenje" kao sto je Milos Baic rekao, onda se "pusenje" MORA dodati i u GROUP zato sto Access zahteva da sve sto se nalazi u SELECT-u, a nije agregatna f-ja bude i u GROUP-u! Ovde treba jako voditi racuna o redosledu navodjenja atributa u GROUP-u ako ih ima vise posto grupisanje po razlicitim atributima ( tj. po istim atributima, ali navedenim razlicitim redosledima ) moze dovesto do potpuno razlicitih razultata u upitu nad istom podacima!
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Zasto mi ovo ne radi?!

[ Pregleda: 3162 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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