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

Ayuda con consulta

Estas en el tema de Ayuda con consulta en el foro de Mysql en Foros del Web. Hola: Tengo una tabla con los siguientes campos: PROVINCIA, CODIGO POSTAL, DIRECCION, DIA, HORA. En una página web quiero introducir una búsqueda con un campo ...
  #1 (permalink)  
Antiguo 09/08/2009, 14:57
 
Fecha de Ingreso: noviembre-2008
Mensajes: 25
Antigüedad: 11 años, 1 mes
Puntos: 0
Ayuda con consulta

Hola:
Tengo una tabla con los siguientes campos:
PROVINCIA, CODIGO POSTAL, DIRECCION, DIA, HORA.

En una página web quiero introducir una búsqueda con un campo de texto por cada uno de los campos de la tabla.
Los resultados sería o bien combinando: todos lo campos, o parte de ellos (sea 1, 2, 3, 4 ó 5 campos).

¿Se puede hacer en mysql? ¿en ese caso cómo sería la sintaxis de la consulta a la base de datos?

Gracias.
  #2 (permalink)  
Antiguo 09/08/2009, 20:46
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 10 años, 10 meses
Puntos: 360
Respuesta: Ayuda con consulta

No se que tan eficiente sea, pero puedes probar así

Código sql:
Ver original
  1. SELECT *FROM tabla WHERE concat(provincia,' ',codigo_postal,' ',direccion,' ',dia,' ',hora) LIKE '%elemento a biscar%';

No lo he probado.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 10/08/2009, 04:58
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 11 años, 8 meses
Puntos: 300
Respuesta: Ayuda con consulta

jozelui,
eso suele hacerse con programación, pero es que tampoco nos has dicho si la búsqueda es OR o AND es decir si tienen que aparecer necesariamente todos los buscados o sólo buscas que aparezca al menos uno de ellos. Y tampoco nos dices nada sobre dejar un input o varios del formulario en blanco. La consulta de nuestro amigo y reciente padre huesos52 (otra vez enhorabuena, Daniel, ahora pública: eso sí que es un karma, amigo) es algo menos eficiente porque no aprovechará los índices y buscará en todos los campos, pienso, aunque funcionará bien. Creo que deberías pedir ayuda en el foro PHP sobre cómo resolver el problema para hacer la búsqueda más eficiente aprovechando los índices. Yo te recomiendo que lo hagas allí, pero que tengas claro qué resultados esperas obtener, e informar al usuario de qué hace la búsqueda con el dato que introduce en cada input del formulario.
saludos
  #4 (permalink)  
Antiguo 10/08/2009, 07:47
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 10 años, 10 meses
Puntos: 360
Respuesta: Ayuda con consulta

Cita:
La consulta de nuestro amigo y reciente padre huesos52 (otra vez enhorabuena, Daniel, ahora pública: eso sí que es un karma, amigo)
jejeje.. gracias jurena.

Cita:
es algo menos eficiente porque no aprovechará los índices y buscará en todos los campos, pienso, aunque funcionará bien.
Totalmente de acuerdo.

Sin embargo, no se me ocurre como hacerlo mas eficiente desde el lenguaje de programación. Se me viene a la cabeza hacer múltiples OR que respondan a la misma búsqueda en la tabla como opción alternativa, pero creo que los indices (Si existen) tampoco se aprovecharían en este caso.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 10/08/2009, 10:03
 
Fecha de Ingreso: noviembre-2008
Mensajes: 25
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Ayuda con consulta

Gracias a los dos. Me estaba temiendo que la programación mysql no iba a resolverlo por si misma. Los registros si tienen índices (son la clave primaria) y por supuesto que pueden quedar uno o varios inputs del formulario en blanco, la búsqueda tendría que extraer los registros, que cumpliesen las condiciones:

Madrid, Jueves o Madrid, Jueves, 20:00 horas (ejemplo)

Gracias por su tiempo.
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 01:38.