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

Zasto mi ovo ne radi?!

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

[ Pregleda: 741 | Odgovora: 4 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MatezYU
NS

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

Sajt: www.matezyu.byethost6.com


Profil

icon Zasto mi ovo ne radi?!12.02.2007. u 10:42

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?
12.02.2007. u 10:42 

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 1068
*.adsl-1.sezampro.yu.



Profil

icon Re: Zasto mi ovo ne radi?!12.02.2007. u 17:17
> 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.
12.02.2007. u 17:17 

Miloš Baić

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

Sajt: www.2advanced.com


Profil

icon Re: Zasto mi ovo ne radi?!12.02.2007. u 17:52
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.
If you go out of your mind, do it quietly, so as not to disturb those around you...
12.02.2007. u 17:52 

badam

Član broj: 78553
Poruke: 87
217.26.69.*



Profil

icon Re: Zasto mi ovo ne radi?!12.02.2007. u 23:42
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'


12.02.2007. u 23:42 

Bojan Kopanja
Web Developer, Nivalon
Stara Pazova

Član broj: 6155
Poruke: 487
80.93.240.*

ICQ: 346697685
Sajt: www.master-develop.com


Profil

icon Re: Zasto mi ovo ne radi?!12.02.2007. u 23:56
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!
12.02.2007. u 23:56 

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

[ Pregleda: 741 | Odgovora: 4 ]

Postavi temu Odgovori

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