Tengo un problema con un procedimiento almacenado y juro que no puedo dar con la solución a pesar de que para mí está bien el programa...
El SP busca en una tabla de categorías, los padres de una categoría específica... por lo tanto debe iterar buscando el padre y el padre de ese padre hasta que el padre de el nodo raíz sea 0. Yo voy concatenando los códigos de los padres y finalmente lanzo la consulta SELECT filtrando por los códigos concatenados... el resultado es una sola fila cuando deberían ser 2. Si lanzo la consulta de solo el string concatenado tiene los valores correctos, pero la consulta final no me devuelve lo que es... y si la lanzo aparte (el SELECT con los valores concatenados), el resultado es como lo esperaría.
Este es el SP:
Código MySQL:
Ver original
Estas son las categorías para que se hagan una idea:
1 Mercado 0
9 Aseo 1
10 Aseo Personal 9
Llamando al procedimiento así: CALL getCategoryParents(10)
Me devuelve: 9 Aseo 1
Solo una fila! debería devolverme el código 9 y el 1.
Si imprimo lo que contiene 'Codigos' antes del select final, me da: 9 , 1
Y si lanzo la consulta aparte... así: SELECT * FROM Categoria WHERE Codigo IN ( 9 , 1 );
me devuelve:
1 Mercado 0
9 Aseo 1
Que es lo que SI esperaría ....
Alguien tiene idea del porque?
Gracias!