miércoles, 30 de octubre de 2013

Hacer count de registros separado por comas en mysql

Muchas veces necesitamos saber cuantas veces se repite un registro en una tabla, pero cuando este esta separado por comas con valores de otros registros, la cosa se complica un poco.

Hace poco necesitaba hacer justamente eso, graficar la información de una tabla, pero como esta información estaba separada por comas.

Que necesitaba mostrar y graficar?

Descripcion|Cantidad
 Colombia         10
 Argentina         5
 Ecuador           3  

Tabla maestra: tbl1
 id|descripcion
 1      Colombia
 2      Argentina
 3      Ecuador


Detalle: tbl2
id|data
1   1,3
2   3,2
3   1, 2
......

Buscando soluciones en la página de mysql, me encontré con esta joya

FIND_IN_SET
mysql> SELECT FIND_IN_SET('b','a,b,c,d'); 
Mas exactamente
mysql> SELECT FIND_IN_SET(valor buscado,campo tabla o string); 
 
La consulta final para mostrar la informacion es la siguiente: 

SELECT tbl1.descripcion,(SELECT COUNT(1) AS total
FROM tbl2
WHERE FIND_IN_SET(tbl1.id, tbl2.data) 
) AS total
FROM tbl1 


Voilá, eso fue todo.

Espero que esto le sirva a alguien.

No hay comentarios:

Publicar un comentario