Foros del Web » Programando para Internet » ASP Clásico »

Construccion de consulta SQL al vuelo

Estas en el tema de Construccion de consulta SQL al vuelo en el foro de ASP Clásico en Foros del Web. Hola a tod@s, tengo una BD con más de 25 tablas, relacionadas entre ellas de diferentes maneras, uno a varios, varios a varios, ... Quiero ...
  #1 (permalink)  
Antiguo 09/06/2004, 09:56
Nax
 
Fecha de Ingreso: enero-2002
Ubicación: Euskal Herria
Mensajes: 129
Antigüedad: 22 años, 5 meses
Puntos: 0
Pregunta Construccion de consulta SQL al vuelo

Hola a tod@s,

tengo una BD con más de 25 tablas, relacionadas entre ellas de diferentes maneras, uno a varios, varios a varios, ...

Quiero crear una plantilla o patron con todos los campos para que el usuario decida qué campos quiere utilizar para la búsqueda, el problema es que luego debo recoger de uno en uno los valores de todos los campos y dependiendo de cuales se han rellenado construir una sentencia SQL u otra.

Alguien sabría explicarme si hay una manera más fácil de hacer este tipo de busquedas? Si se puede hacer o programar alguna función que construya la sentencia SQL al vuelo sin tener que comprobar los campos uno por uno?

Muchas gracias de antemano y saludos!
__________________
SOS Palestina
  #2 (permalink)  
Antiguo 09/06/2004, 10:24
 
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago
Mensajes: 87
Antigüedad: 21 años, 5 meses
Puntos: 0
entiendo que no hay funcion que lo haga de forma automatica, por lo que supongo que debrias validar cada campo del formulario para saber si lo incluyes o no en la busqueda... en mi caso y quizas es pesimo hacerlo, pero luego del SELECT valido todo con IF y CASE y me funciona a la perfeccion...
__________________
Gigio
  #3 (permalink)  
Antiguo 14/06/2004, 03:28
Nax
 
Fecha de Ingreso: enero-2002
Ubicación: Euskal Herria
Mensajes: 129
Antigüedad: 22 años, 5 meses
Puntos: 0
Gracias por tu respuesta Gigio,

lo que pasa es que no consigo estructurarlo dentro de una lógica, es decir:

miro los campos uno por uno, si me han pasado algo lo tengo en cuenta y sino dejo el string vacío, tal que así (si alguien no lo entiende que me lo diga y lo traduzco, las variables del codigo están en vasco):

Código:
Harpideduna = CStr(Request.Form("Harpideduna"))
If Harpideduna = "Edozein" Then
Harpideduna_String = ""
Else
Harpideduna_String = " AND (Harpideduna LIKE '" & Harpideduna & "')"
End If
El problema es que despues de esto no consigo ordenar las ideas , porque dependiendo de los campos que se hayan llenado debo seleccionar unas tablas u otras para el FROM y para el WHERE más de lo mismo...

Me puede ayudar alguien en ordenar este caos?? Dónde debo construir el FROM y cómo? Y el WHERE? No hace falta que me pongais código si no quereis, para empezar quiero entender la lógica del programa... que no es poco!!

Gracias y saludos
__________________
SOS Palestina
  #4 (permalink)  
Antiguo 14/06/2004, 05:44
Avatar de tuning_boy  
Fecha de Ingreso: mayo-2004
Ubicación: Madrid
Mensajes: 45
Antigüedad: 20 años
Puntos: 0
Hola Nax.

Te explico como lo hago yo. Me creo una variable SQL, la inicializo con "select * from tabla where ". Después de esto voy comprobando el valor de cada campo pasado le concateno los "and campo = valor".

Hay que tener cuidado con el primero que no tiene que llevar "and". Es bastante sencillo en cuanto le pillas el truco te salen solas.

Espero que te sirva.
__________________
Si te gusta el tuning ...
http://www.comunidad-tuning.com
  #5 (permalink)  
Antiguo 14/06/2004, 06:03
Nax
 
Fecha de Ingreso: enero-2002
Ubicación: Euskal Herria
Mensajes: 129
Antigüedad: 22 años, 5 meses
Puntos: 0
Gracias!

Bale, hasta ahí entendido, pero cuando aparte del "and campo = valor" tengo que añadir "and tabla1.cod = tabla2.cod" lo hago todo seguido? tal que: "and campo = valor and tabla1.cod = tabla2.cod"

Y como hago para que no se me repita el "and tabla1.cod = tabla2.cod" ?

Muchas gracias y saludos
__________________
SOS Palestina
  #6 (permalink)  
Antiguo 17/06/2004, 05:57
Nax
 
Fecha de Ingreso: enero-2002
Ubicación: Euskal Herria
Mensajes: 129
Antigüedad: 22 años, 5 meses
Puntos: 0
Aunque puede que no afecte en nada en la parte del WHERE el que se repita el "and tabla1.cod = tabla2.cod" verdad?

gracias de antemano y saludos
__________________
SOS Palestina
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 22:50.