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

Consulta de varias campos a la vez

Estas en el tema de Consulta de varias campos a la vez en el foro de Mysql en Foros del Web. Hola, espero alguien me pueda ayudar . resulta que tengo una caja de busqueda de usuarios en mi pagina, que tiene 6 campos: 1) Primer ...
  #1 (permalink)  
Antiguo 10/04/2015, 07:40
 
Fecha de Ingreso: noviembre-2011
Mensajes: 35
Antigüedad: 12 años, 5 meses
Puntos: 1
Busqueda Consulta de varias campos a la vez

Hola, espero alguien me pueda ayudar . resulta que tengo una caja de busqueda de usuarios en mi pagina, que tiene 6 campos:

1) Primer Nombre
2)Segundo Nombre
3)Apellido Paterno
4)Apellido Materno
5)Correo electronico
6)Usuario

Lo que quiero hacer es que se pueda buscar el usuario por cualquiera de los 6 campos, como lo puedo hacer?

Intente:
Select * from usuario where primer_nombre="JAVIER" OR segundo_nombre="JAVIER" OR apellidopaterno="Javier" OR ...........

pero esto solo buscara en un campo, y lo que quiero es que si ponen en la busqueda:

Javier Campos Martinez

Aparezca ese usuario.

Alguien me podria ayudar? :( gracias.
  #2 (permalink)  
Antiguo 10/04/2015, 08:12
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Consulta de varias campos a la vez

Hola Rodberry:

La mejor opción para este tipo de búsquedas suele ser utilizar funciones de Texto Completo, dale un vistazo a esta liga:

https://dev.mysql.com/doc/refman/5.0...xt-search.html

También puedes optar por búsquedas tipo LIKE o Expresiones regulares, pero estas implicarían transformaciones adicionales que pueden ser muy costosas en performance.

Saludos.
  #3 (permalink)  
Antiguo 10/04/2015, 10:07
(Desactivado)
 
Fecha de Ingreso: abril-2015
Ubicación: España
Mensajes: 616
Antigüedad: 9 años
Puntos: 74
Respuesta: Consulta de varias campos a la vez

Código SQL:
Ver original
  1. SELECT *
  2. FROM usuario
  3. WHERE CONCAT(primer_nombre, " ", apellidopaterno, " ", apellidomaterno) = "Javier Campos Martinez"
  #4 (permalink)  
Antiguo 10/04/2015, 10:11
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta de varias campos a la vez

Cita:
Iniciado por superweb360 Ver Mensaje
Código SQL:
Ver original
  1. SELECT *
  2. FROM usuario
  3. WHERE CONCAT(primer_nombre, " ", apellidopaterno, " ", apellidomaterno) = "Javier Campos Martinez"
Si y no, esa consulta soluciona solo un caso, pero lo que necesita el que pregunta es que dependiendo de que parametro se pase a la consulta cambie el where de la misma....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 10/04/2015, 10:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta de varias campos a la vez

Cita:
Iniciado por superweb360 Ver Mensaje
Código SQL:
Ver original
  1. SELECT *
  2. FROM usuario
  3. WHERE CONCAT(primer_nombre, " ", apellidopaterno, " ", apellidomaterno) = "Javier Campos Martinez"
Como ya te dijo @Libras, eso soluciona sólo el caso donde el dato es exactamente igual. Pero no lo que dijiste en el primer post:
Cita:
Lo que quiero hacer es que se pueda buscar el usuario por cualquiera de los 6 campos
Para eso el mejor camino es usar expresiones regulares, o bien usar indices FULLTEXT. Pero NO usar CONCAT, y menos LIKE.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 10/04/2015, 15:45
 
Fecha de Ingreso: noviembre-2011
Mensajes: 35
Antigüedad: 12 años, 5 meses
Puntos: 1
Respuesta: Consulta de varias campos a la vez

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Como ya te dijo @Libras, eso soluciona sólo el caso donde el dato es exactamente igual. Pero no lo que dijiste en el primer post:

Para eso el mejor camino es usar expresiones regulares, o bien usar indices FULLTEXT. Pero NO usar CONCAT, y menos LIKE.
Entonces como podría ser :(

Etiquetas: Ninguno
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 14:13.