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

Problema consulta de personas con campo que almacena: Apellido/s, Nombre/s

Estas en el tema de Problema consulta de personas con campo que almacena: Apellido/s, Nombre/s en el foro de Mysql en Foros del Web. Hola a todos, como dice mi título, tengo una base de datos con varios campos que almacenan nombres de personas de la forma: Apellido/s, Nombre/s ...
  #1 (permalink)  
Antiguo 26/09/2011, 07:33
 
Fecha de Ingreso: octubre-2009
Mensajes: 107
Antigüedad: 15 años
Puntos: 2
Problema consulta de personas con campo que almacena: Apellido/s, Nombre/s

Hola a todos, como dice mi título, tengo una base de datos con varios campos que almacenan nombres de personas de la forma: Apellido/s, Nombre/s
El tema es cuando -a través del buscador que tengo hecho en el sitio web- la gente busca de estas formas: Nombre/s Apellido ó Nombre/s, Apellido ó si la persona almacenada tiene dos nombres y uno omite uno de ellos al buscar, en ninguno de estos casos aparecen resultados (pero debería).

Básicamente es ineficiente en la búsqueda!
Aclaro que, si quiero buscar sólo por un apellido o por un nombre, sí aparecen resultados.

Bueno, es bastante urgente, si alguien me puede orientar, se lo agradeceré mucho!!!

Saludos!
  #2 (permalink)  
Antiguo 26/09/2011, 07:48
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Problema consulta de personas con campo que almacena: Apellido/s, Nombre/s

SELECT nombre, apellido FROM tutabla WHERE nombre LIKE '%Juan%' AND apellido LIKE '%Martínez%'

Si existe un Juan Francisco Rodríguez Martínez, o un Juan Martínez o un Pedro Juan Martínez Pons, los encontrará, creo
  #3 (permalink)  
Antiguo 26/09/2011, 08:08
 
Fecha de Ingreso: octubre-2009
Mensajes: 107
Antigüedad: 15 años
Puntos: 2
Respuesta: Problema consulta de personas con campo que almacena: Apellido/s, Nombre/s

Cita:
Iniciado por jurena Ver Mensaje
SELECT nombre, apellido FROM tutabla WHERE nombre LIKE '%Juan%' AND apellido LIKE '%Martínez%'

Si existe un Juan Francisco Rodríguez Martínez, o un Juan Martínez o un Pedro Juan Martínez Pons, los encontrará, creo
Hola, el asunto es que tanto el nombre y apellido los vengo almacenando en un mismo campo. Es decir, tengo los campos autor, segundo_autor, autor_colaborador, etc. Todos con los datos cargados de la forma: Perez Garcia, Juan Manuel -como ejemplo-.
Sugerís que tengo que modificar todo y separarlo en nombreAutor y apellidoAutor, y así? no hay una forma de consultar que sirva para seguir utilizando mi base de datos así como está?

Saludos!
  #4 (permalink)  
Antiguo 26/09/2011, 08:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema consulta de personas con campo que almacena: Apellido/s, Nombre/s

Cita:
no hay una forma de consultar que sirva para seguir utilizando mi base de datos así como está?
En realidad no. Por eso las base de datos deben siempre estar bien diseñdas desde el iicio, normalizadas lo mejor posible y respetar lo más fielmente que se pueda el modelo relacional. Modificarlas para corregir defectos una vez que stá en operación es calamitoso.
Lamentablemente, tal y como la tienes, para resolver las consultas de una forma eficiente y funcional será algo complicado. MUY complicado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 26/09/2011, 09:08
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Problema consulta de personas con campo que almacena: Apellido/s, Nombre/s

Hola potoka:

Creo que ha quedado claro que el modelo que manejas no es el más adecuado, pero muchas no está en nuestras manos poder hacer correcciones.

La consulta que te propone jurena podría servirte, si bien no es la más óptima

Código MySQL:
Ver original
  1. SELECT nombre
  2. FROM tutabla
  3. WHERE nombre LIKE '%Juan%' AND nombre LIKE '%Martínez%'

Aquí el detalle es que tendrías qué atomizar tu criterio de búsqueda, es decir partirlo en palabras inviduales... su por ejemplo tu criterio de búsqueda es

Miguel de Cervantes Saavedra, tu consulta debería quedar así_

Código MySQL:
Ver original
  1. SELECT nombre
  2. FROM tutabla
  3. nombre LIKE '%Miguel%' AND
  4. nombre LIKE '%de%' AND
  5. nombre LIKE '%Cervantes%' AND
  6. nombre LIKE '%Saavedra%'

Te repito, no es la mejor forma, pero sin otro modelo de BD es de lo poco que puedes hacer.

Saludos
Leo.
  #6 (permalink)  
Antiguo 26/09/2011, 14:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Problema consulta de personas con campo que almacena: Apellido/s, Nombre/s

Soy de la opinión de leonardo_josue y de gnzsoloyo. Tendrás que cambiar y no sólo crear los campos nombreAutor y apellidosAutor, sino crear una tabla para ellos con un campo para el id de la obra o lo que sea y el tipo de autoría autor, segundo_autor, autor_colaborador (que podría ser otra tabla, relacionada, en lugar de 3 campos en tu tabla. Imagínate si tienes que buscar el nombre de alguien en los tres campos; y si buscas dos nombres en los tres campos: una locura de consulta para algo fácil si tu base estuviera normalizada; tampoco cometerías errores, pues los nombres, que no se repetirían, se cargarían desde la tabla de nombres... Piénsalo despacio
  #7 (permalink)  
Antiguo 26/09/2011, 14:57
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 14 años, 2 meses
Puntos: 91
Respuesta: Problema consulta de personas con campo que almacena: Apellido/s, Nombre/s

Yo igual opino que deberías cambiar el modelo y ponerlos en campos diferentes, pero si quiere insistir con lo que tienes (y estresar un poco más el motor) puedes consultar esto

http://dev.mysql.com/doc/refman/5.0/es/regexp.html
  #8 (permalink)  
Antiguo 28/09/2011, 15:36
 
Fecha de Ingreso: octubre-2009
Mensajes: 107
Antigüedad: 15 años
Puntos: 2
Respuesta: Problema consulta de personas con campo que almacena: Apellido/s, Nombre/s

Hola a todos!! Muchas gracias por sus opiniones!!
Les cuento que estoy -con mucha paciencia- cambiando el modelo porque es preferible hacerlo ahora que más adelante...
Así que por ahora mucho más no tengo para contarles, pero estoy planteándolo en base a los consejos que me dieron..

Disculpen que no respondí antes, muchas gracias!! Saludos!!

Etiquetas: almacena, campos, personas
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 06:48.