Yii Framework Forum: [Risolto] Come Eseguire Un Count If ? - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

[Risolto] Come Eseguire Un Count If ? Rate Topic: -----

#1 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 620
  • Joined: 03-October 12
  • Location:Ferrara

Posted 25 October 2012 - 02:04 PM

Ho una colonna ore, ed una tipoLavoro .

Sto cercando di contare una colonna solo se il valore è di un certo tipo

                $criteria = new CDbCriteria();
		
		$criteria->select = "COUNT(id) as lavoratori,
                                     COUNT( IF ( tipoLavoro = 1 ) ) as contaTipoUno,
  				     SUM(ore) as sommaOre,
		.....		



Naturalmente ho una variabile di classe contaTipoUno


Ma ottengo una exception:

Quote

Active record "Rapporti" sta cercando di selezionare la colonna non valida "COUNT( IF(tipoLavoro=1". Nota, la colonna deve esistere nella tabella o essere un'espressione con alias.


Ho una unica tabella coinvolta in questo SQL ! e il campo è scritto bene ed esiste ...

... l'ho fatto decine di volte via mysql_query in php, ma ... qualcosa im sfugge
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#2 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 25 October 2012 - 02:43 PM

Poco ortodosso, ma funzionale

                $criteria->select = "COUNT(id) as lavoratori,
                                     (select count(id) from t where tipoLavoro = 1) as contaTipoUno,
                                     SUM(ore) as sommaOre,

0

#3 User is offline   a1abhishek 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 1
  • Joined: 25-October 12

Posted 25 October 2012 - 03:23 PM

View Postsensorario, on 25 October 2012 - 02:43 PM, said:

Poco ortodosso, ma funzionale

                $criteria->select = "COUNT(id) as lavoratori,
                                     (select count(id) from t where tipoLavoro = 1) as contaTipoUno,
                                     SUM(ore) as sommaOre,



its absolutely correct.
thanks
0

#4 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 620
  • Joined: 03-October 12
  • Location:Ferrara

Posted 25 October 2012 - 03:40 PM

eh eh .. questo è più elegante , e ci sono arrivato da solo PER SBAGLIO !!!

SUM(lavoroId = 4) as contaUno,
SUM(lavoroId = 1) as contaUno,


mi sfugge su COSA si basa il funzionamento ... credo che sia un SOMMA SE lavoroId = 4 ...

... il mio problema è fare la somma per id IN (4,5,6). .. questo ancora non va...
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#5 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 25 October 2012 - 04:49 PM

Allora prova
(sum(campo=2) + sum(campo=3) + sum(campo=4)) as conta

1

#6 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 620
  • Joined: 03-October 12
  • Location:Ferrara

Posted 04 November 2012 - 11:19 AM

View Postsensorario, on 25 October 2012 - 04:49 PM, said:

Allora prova
(sum(campo=2) + sum(campo=3) + sum(campo=4)) as conta



caspita, bastava pensarci, funziona a meraviglia !
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users