Come Imposto Una Query Con Cdbcriteria

ciao a tutti,

ho ancora bisogno del vostro aiuto perchè non ho capito come impostare le query con CDbCriteria.

Ho una tabella con un campo id (chiave) un campo inizio (data) ed un campo risposta (data) ed altri campi.

Ho bisogno di impostare questa query:




select count(id) AS 'num_nonrisposte',month(inizio) as mese from chiamate where isnull(risposta) group by month(inizio);



che mi restituisce una tabella con due valori per ogni mese: il mese ed il numero di campi con risposta=NULL in quel mese.

Ho provato in diversi modi ma non ho capito come utilizzare CDbCriteria (o se utilizzare un’altro modo)

Una prova che ho fatto:




$criteria= new CDbCriteria();

$criteria = array("select" => "count (id) as num_nonrisposte,month(inizio) as mese ", "condition" => "isnull(risposta)", "group" => "month(inizio)");

$righe_non_risposte = Chiamate::model()->findAll($criteria);



ma ovviamente non esiste il metodo count.

Qualcuno mi aiuta?

grazie in anticipo.

In che senso non esiste il metodo count? Quali errori ricevi, se ne ricevi.

si ho un errore (dbpbxluc è il db):

exception ‘CDbException’ with message ‘CDbCommand ha riportato un errore nell’esecuzione della query SQL: SQLSTATE[42000]: Syntax error or access violation: 1305 FUNCTION dbpbxluc.count does not exist. The SQL statement executed was: SELECT count (id) as num_nonrisposte,month(inizio) as mese FROM chiamate t WHERE isnull(risposta) GROUP BY month(inizio)’ in /home/yiiframework/framew/framework/db/CDbCommand.php:528

perché c’è uno spazio tra count e (id), scrivi count(id) non count (id)




$criteria= new CDbCriteria();

$criteria = array("select" => "count(id) as num_nonrisposte,month(inizio) as mese ", "condition" => "isnull(risposta)", "group" => "month(inizio)");

$righe_non_risposte = Chiamate::model()->findAll($criteria);