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

Sentencia para búsquedas

Estas en el tema de Sentencia para búsquedas en el foro de Mysql en Foros del Web. En mi aplicación el usuario puede realizar búsquedas de trabajos rellenando los campos de un formulario. El formulario es: Autor: Titulo: Año de Creación: Pues ...
  #1 (permalink)  
Antiguo 26/01/2009, 02:33
 
Fecha de Ingreso: diciembre-2008
Mensajes: 122
Antigüedad: 15 años, 4 meses
Puntos: 0
Sentencia para búsquedas

En mi aplicación el usuario puede realizar búsquedas de trabajos rellenando los campos de un formulario.

El formulario es:

Autor:
Titulo:
Año de Creación:

Pues bien necesito una consulta que me muestre los trabajos que cumplan las condiciones que exige el usuario.

Habia probado con:

select * from trabajos where autor=$autor or titulo=$titulo or año=$año ;


Pero de esa forma lo unico que consigo es que si el usuario introduce autor= "pepe" , me salen todos los trabajos de pepe (Correcto).
Pero si el usuario introduce
Autor = "Pepe"
Titulo = " Trabajo XxX "
Año = 2005

Me sale igual que antes todos los trabajos de Pepe y no los especificos de las condiciones del formulario.
Sé que es debido a los or pero con and tampoco funcionaría puesto que si el usuario solamente rellena el campo Autor = "Pepe" ya no saldrían todos los trabajos de Pepe.

¿Alguien sabe como hacerlo?
  #2 (permalink)  
Antiguo 27/01/2009, 03:54
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Sentencia para búsquedas

Tienes que utilizar el operador And

Dim sql As String

sql = "select * from trabajos where autor=$autor"
If titulo <> "" Then sql = sql & " And titulo=$titulo"
If año <> 0 Then sql = sql & " And año=$año"
sql = sql & ";"



  #3 (permalink)  
Antiguo 28/01/2009, 02:23
 
Fecha de Ingreso: diciembre-2008
Mensajes: 122
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Sentencia para búsquedas

Y si tuviera un montón de campos más???

No existiría otra opcion más optima??

Supon que tengo 10 campos, sería muy lioso
  #4 (permalink)  
Antiguo 28/01/2009, 04:05
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: Sentencia para búsquedas

Código sql:
Ver original
  1. SELECT  *
  2. FROM trabajos
  3. WHERE autor IN(listaseparadaporcomas)
  4.     AND titulo IN(listaseparadaporcomas);
Para agregar condiciones al WHERE que pueden aumentar o disminuir según lo que necesites, deberás programar en la aplicación la creación dinámica de la sentencia agregando las condiciones necesarias según se requiera. Pero eso es problema de programación y no de BAase de Datos o SQL.

Por favor, no pongan código de programación, resulta muy confuso leer SQL "sucio" con otro código y no se vuelve evidente si el error se comete en el SQL o en las variables del programa (leer Función de la sección de Base de Datos)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 21:23.