Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Conteo de cadenas de texto por Columnas Mysql

Estas en el tema de Conteo de cadenas de texto por Columnas Mysql en el foro de Mysql en Foros del Web. Hola Amigos tengo lo siguiente una columna con varios valores separados por espacio REGISTROS ****** casa juan pepe juan pepe perro taza computador casa juan ...
  #1 (permalink)  
Antiguo 02/04/2013, 12:03
 
Fecha de Ingreso: noviembre-2006
Mensajes: 19
Antigüedad: 18 años
Puntos: 0
Conteo de cadenas de texto por Columnas Mysql

Hola Amigos tengo lo siguiente
una columna con varios valores separados por espacio

REGISTROS
******
casa juan pepe
juan
pepe perro taza
computador casa juan perro
perro

asi esta compuesta la columna REGISTROS, mi dilema es el siguiente: necesito obtener el total de cada una de las cadenas que existe en REGISTROS , ejemplo

cuantas veces esta la palabra casa en la columna ,en este caso serian 2 veces,

cuantas veces esta la palabra perro, en este caso 5 veces y asi con cada una ellas

El dilema es que los textos estan almacenados asi y lo unico que los separa en el caso en los que existen mas de una cadena es el espacio, ¿Como podria obtener el total de veces que esta cada una de las cadenas en la columna?
Gracias

Última edición por chomba; 02/04/2013 a las 12:09
  #2 (permalink)  
Antiguo 02/04/2013, 13:20
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Conteo de cadenas de texto por Columnas Mysql

Hola chomba:

Lo que puedes hacer es tirar tu tabla a la basura y hacer un buen diseño, evitando campos multivaluados, pues estos, como podrás darte cuenta, sólo te darán problemas...

Ahora bien, si no puedes hacer eso (pero en serio, no deseches la primer opción que te puse, porque esto es un terrible error de diseño ) lo puedes hacer de manera programática, es decir mediande un procedimiento almacenado o con el lenguaje de programación que estés utilizando.

la idea sería en primer lugar separar todas las palabras y una vez haciendo esto poder hacer un COUNT() agrupando por palabras, checa esta liga:

http://lists.mysql.com/mysql/199134

Haciendo algunas modificaciones, puedes agregar al final del procedimiento la consulta con el COUNT() agrupando por el campo VALUE y obtener algo como esto:

Código MySQL:
Ver original
  1. mysql> CALL split_string('adios,mundo,cruel,adios', ',');
  2. +-------+----------+
  3. | value | count(*) |
  4. +-------+----------+
  5. | adios |        2 |
  6. | cruel |        1 |
  7. | mundo |        1 |
  8. +-------+----------+
  9. 3 rows in set (0.05 sec)
  10.  
  11. Query OK, 0 rows affected (0.06 sec)

Dale un vistazo y nos comentas.

Saludos
Leo.
  #3 (permalink)  
Antiguo 02/04/2013, 13:36
 
Fecha de Ingreso: noviembre-2006
Mensajes: 19
Antigüedad: 18 años
Puntos: 0
Respuesta: Conteo de cadenas de texto por Columnas Mysql

gracias por tu tiempo
creeme que la primera opción me ronda siempre por la cabeza el problema
es una BD agena solo pudo hacer consultas a la tabla, no se quien fue el genio que se le ocurrio hacer una columna de ese tipo

Etiquetas: cadenas, columnas, conteo, registros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:07.