Buen día mundo!
Estoy tratando de hacer un reporte y decidí cargar con toda la lógica al servidor MYSQL(InnoDB)
para que con YII solamente me encargue de renderizar el resultado de la consulta.
Pero me aparece este error!!
CDbCommand falló al ejecutar la sentencia SQL: SQLSTATE[HY000]: General error
Consulta SQL
SET @total_casos = (SELECT COUNT(*) FROM casos);
SET @total_casos_cerrados = (SELECT COUNT(*) FROM casos WHERE idEstatus IN(2,3));
SET @total_casos_cerrados_tiempo = (SELECT COUNT(*) FROM casos WHERE idEstatus = 2);
SET @total_casos_cerrados_destiempo = (SELECT COUNT(*) FROM casos WHERE idEstatus = 3);
SELECT i.nombre as 'Ingeniero',
@total_casos_x_ing := (SELECT COUNT(*) FROM casos c WHERE c.idIngeniero = i.idIngeniero) AS 'Casos Asignados',
((@total_casos_x_ing * 100) / @total_casos) as '%',
@total_casos_cerrados_x_ing := (SELECT COUNT(*) FROM casos c WHERE c.idIngeniero = i.idIngeniero AND c.idEstatus IN(2,3)) AS 'No. de Casos Cerrados',
((@total_casos_cerrados_x_ing * 100) / @total_casos_x_ing) as '%',
@total_casos_cerrados_tiempo_x_ing := (SELECT COUNT(*) FROM casos c WHERE c.idIngeniero = i.idIngeniero AND c.idEstatus = 2) AS 'No. de Casos Cerrados a Tiempo',
((@total_casos_cerrados_tiempo_x_ing * 100) / @total_casos_cerrados_x_ing) as '%',
@total_casos_cerrados_destiempo_x_ing := (SELECT COUNT(*) FROM casos c WHERE c.idIngeniero = i.idIngeniero AND c.idEstatus = 3) AS 'No. de Casos Cerrados Fuera de Tiempo',
((@total_casos_cerrados_destiempo_x_ing * 100) / @total_casos_cerrados_x_ing) as '%'
FROM ingenieros i
UNION
SELECT 'SUMA',
@total_casos,
'100%',
@total_casos_cerrados,
((@total_casos_cerrados * 100) / @total_casos),
@total_casos_cerrados_tiempo,
((@total_casos_cerrados_tiempo * 100) / @total_casos),
@total_casos_cerrados_destiempo,
((@total_casos_cerrados_destiempo * 100) / @total_casos)
ORDER BY @total_casos_cerrado_tiempo DESC
Codigo YII
$query = "
SET @total_casos = (SELECT COUNT(*) FROM casos);
SET @total_casos_cerrados = (SELECT COUNT(*) FROM casos WHERE idEstatus IN(2,3));
SET @total_casos_cerrados_tiempo = (SELECT COUNT(*) FROM casos WHERE idEstatus = 2);
SET @total_casos_cerrados_destiempo = (SELECT COUNT(*) FROM casos WHERE idEstatus = 3);
SELECT i.nombre as 'Ingeniero',
@total_casos_x_ing := (SELECT COUNT(*) FROM casos c WHERE c.idIngeniero = i.idIngeniero) AS 'Casos Asignados',
((@total_casos_x_ing * 100) / @total_casos) as '%',
@total_casos_cerrados_x_ing := (SELECT COUNT(*) FROM casos c WHERE c.idIngeniero = i.idIngeniero AND c.idEstatus IN(2,3)) AS 'No. de Casos Cerrados',
((@total_casos_cerrados_x_ing * 100) / @total_casos_x_ing) as '%',
@total_casos_cerrados_tiempo_x_ing := (SELECT COUNT(*) FROM casos c WHERE c.idIngeniero = i.idIngeniero AND c.idEstatus = 2) AS 'No. de Casos Cerrados a Tiempo',
((@total_casos_cerrados_tiempo_x_ing * 100) / @total_casos_cerrados_x_ing) as '%',
@total_casos_cerrados_destiempo_x_ing := (SELECT COUNT(*) FROM casos c WHERE c.idIngeniero = i.idIngeniero AND c.idEstatus = 3) AS 'No. de Casos Cerrados Fuera de Tiempo',
((@total_casos_cerrados_destiempo_x_ing * 100) / @total_casos_cerrados_x_ing) as '%'
FROM ingenieros i
UNION
SELECT 'SUMA',
@total_casos,
'100%',
@total_casos_cerrados,
((@total_casos_cerrados * 100) / @total_casos),
@total_casos_cerrados_tiempo,
((@total_casos_cerrados_tiempo * 100) / @total_casos),
@total_casos_cerrados_destiempo,
((@total_casos_cerrados_destiempo * 100) / @total_casos)
ORDER BY @total_casos_cerrado_tiempo DESC";
$dataReader = Yii::app()->db->createCommand($query)->queryAll();