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

Ocurrencias de una búsqueda

Estas en el tema de Ocurrencias de una búsqueda en el foro de Mysql en Foros del Web. Hola a todos: Teniendo como ejemplo una tabla con los siguientes registros: ID APELLIDOS 1 PEREZ PEREZ 2 PEREZ GOMEZ 3 LOPEZ GOMEZ Quisiera saber ...
  #1 (permalink)  
Antiguo 21/02/2009, 17:45
Avatar de auttranadhie  
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid (España)
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 8
Pregunta Ocurrencias de una búsqueda

Hola a todos:

Teniendo como ejemplo una tabla con los siguientes registros:

ID APELLIDOS
1 PEREZ PEREZ
2 PEREZ GOMEZ
3 LOPEZ GOMEZ


Quisiera saber si es posible realizar una consulta en un campo texto (p.e., LIKE %perez%) y que una columna me muestre el número de veces (ocurrencias) en que ha encontrado la cadena de búsqueda. Sería algo sí como:

ID APELLIDOS VECES
1 PEREZ PEREZ 2
2 PEREZ GOMEZ 1


Ya he probado con COUNT() pero sólo sirve para contar filas.

Si alguien tiene alguna idea se lo agradezco de antemano.

Un saludo.
  #2 (permalink)  
Antiguo 23/02/2009, 11:17
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Ocurrencias de una búsqueda

Todo dependerá de si esa consulta la tendrás que hacer mucho o poco y sobre qué cantidad de registros, como bien sugiere Seyko en el post al que te remito.
Mira este post donde se trata sobre el tema:
http://www.forosdelweb.com/f21/canti...alabra-627306/
La solución de loac3 funciona, aunque habría que comprobar si es eficiente. Yo intentaría hacer algo con la consulta y un poco de programación.
Si hicieras muchas veces esa consulta, podrían separarse los apellidos en dos campos indexados debidamente y todo iría más rápido. Luego, para mostrar el nombre completo, simplemente harías un concat de nombre y apellido1 y apellido2.
La consulta sería:
Código sql:
Ver original
  1. SELECT id, CONCAT(apellido1,' ' ,apellido2) APELLIDOS, (IF(apellido1='Pérez', 1,0) + IF(apellido2='Pérez',1,0)) VECES FROM nombretabla WHERE apellido1 = 'Pérez' OR apellido2='Pérez'
Pero eso es para el caso de tener dos campos.

Última edición por jurena; 23/02/2009 a las 11:26
  #3 (permalink)  
Antiguo 23/02/2009, 16:30
Avatar de auttranadhie  
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid (España)
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 8
Sonrisa Respuesta: Ocurrencias de una búsqueda

Hola, jurena:

Lo primero, gracias por atender a esta consulta.

He estado mirando tu solución y efectivamente sería válida siempre y cuando siempre se realizasen una serie de búsquedas muy estructuradas.

Por otro lado, eché un vistazo a la referencia a la que me enlazaste: ya había pensado en una solución como la que se plantea en la última respuesta de ese hilo de discusión.

Mi pretensión era intentar poderme saltar el paso de tener que recorrer todo el resultado de la consulta para luego aplicar un modelo y, finalmente, pasar todo a una matriz.

En cualquier caso, me guardaré tu propuesta por ver si pudiera ser utilizado en cualquier otra ocasión.

Lo dicho, muchas gracias y un saludo.
  #4 (permalink)  
Antiguo 24/02/2009, 02:05
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Ocurrencias de una búsqueda

Auttranadhie,
Edito para borrar mi propuesta y recomendarte la de loac3, pues la he probado y ofrece mejor rendimiento que la que te propuse yo anteriormente.

Saludos

Última edición por jurena; 24/02/2009 a las 10:55
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:02.