Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/08/2012, 09:46
gandalf_2706
 
Fecha de Ingreso: marzo-2010
Mensajes: 34
Antigüedad: 14 años, 1 mes
Puntos: 0
Pregunta Problema en CASE en SELECT - Rutina

Buenos dias foreros!!! Estoy armando un buscador que necesito que sea eficiente, por lo tanto la estoy diseñando como una rutina, la llamo desde PHP y realizo la busqueda en MYSQL.
La consulta es en cuanto a un select, cuando llegan los parametros de la busqueda tengo que ver, si llega cierto dato de una categoria, necesito hacer un join en una tabla extra que es grupo_categoria... pero eso seria la idea de fondo.
El problema es que para eso utilizo la siguiente rutina (es solo un fragmento de la rutina, pero es donde tengo el problema, por eso quizas falten parametros de la rutina completa)..

BEGIN
SET categoria=CONCAT(',',categoria,','); // aca tomo el valor que llegar como parametro
SELECT g.*,
case when categoria!=',,'
then convert((SELECT gc.categoria_id
FROM grupo_categoria gc
JOIN grupo g ON g.id=gc.grupo_id
WHERE gc.grupo_id=g.id) using utf8)
else '' end as `categoria_id`
FROM grupo g
where
1 = 1;

END

Mi problema es que en el Select, quiero evaluar si llega el parametro categoria, quiero que se seleccione dicho campo de esa tabla y a su vez necesito convertirla a utf8... sino viene quiero que ese campo este vacio... quizas estoy utilizando mal el case when -> else... pero Mysql me dice que hay un error en esa parte del codigo y no entiendo porque... Alguien tiene idea si esta mal utilizado o como podria hacer para consultar si el campo categoria es diferente a ese string=',,' que haga el select con el join, y sino que lo deje como una cadena vacia????

Desde ya muchas gracias!!!