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

Consultas con cualquier campo

Estas en el tema de Consultas con cualquier campo en el foro de SQL Server en Foros del Web. Que tal el problema es el siguiente tengo una tabla donde tiene los campos id nombre appat apmat carrera. En un programa en c# tengo ...
  #1 (permalink)  
Antiguo 26/03/2014, 15:27
 
Fecha de Ingreso: enero-2011
Ubicación: Del otro lado del monitor
Mensajes: 43
Antigüedad: 13 años, 10 meses
Puntos: 0
Consultas con cualquier campo

Que tal el problema es el siguiente tengo una tabla donde tiene los campos id nombre appat apmat carrera. En un programa en c# tengo 5 textbox y un boton de consulta. Al hacer clic en el boton mi query se llena con los textbox, por ejemplo:
Código SQL:
Ver original
  1. SELECT * FROM Alumnos WHERE id=textbox1.text
y asi con cada textbox se llena el campo. Ahora me surgue una duda mi Query esta asi:
Código SQL:
Ver original
  1. SELECT * FROM Alumnos WHERE id=textbox1 AND nombre=textbox2 AND appat=textbox3 AND apmat=textbox4 AND carrera=textbox5
por lo cual indico que se deben de cumplir TODOS los campos para poder arrojar una consulta, mi duda es. Como puedo hacerle para que no se vean obligados a llenar todos los campos, vamos si no se sabe el nombre del alumno pero si se sabe la carrera, o no se sabe el nombre pero si el apellido paterno, nos arroje un query que coincida ya sea con todos los de la carrera o todos los que tengan el mismo apellido, se puede hacer todo dentro de un mismo query o tendria que hacer muchos querys para diversos casos?


Espero me haya explicado. Saludos
  #2 (permalink)  
Antiguo 26/03/2014, 15:44
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Consultas con cualquier campo

cambia los and por or
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 26/03/2014, 15:54
 
Fecha de Ingreso: enero-2011
Ubicación: Del otro lado del monitor
Mensajes: 43
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Consultas con cualquier campo

Si hago eso que tu dices supongamos que quiero buscar a los alumnos perez de la carrera sistemas entonces mi query quedaria asi:

Código SQL:
Ver original
  1. SELECT * FROM alumnos WHERE appat=perez OR carrera=isc
el query me arrojaria todo lo que fuera perezy lo que fuera sistemas o sea me enseñaria a todos los perez de la escuela y a todos los alumnos de sistemas
  #4 (permalink)  
Antiguo 26/03/2014, 16:25
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Consultas con cualquier campo

tienes razon...mis disculpas....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 26/03/2014, 16:43
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: Consultas con cualquier campo

Estás planteando un caso donde las condiciones a cumplir se determinan de una forma dinámica. Por consecuencia, la query a usar debe incluir o excluir condiciones también en forma dinámica. ¿No te parece?
Es más sencillo crear una query que agregue o excluya las condiciones a cumplir, que hacer una por una todas las combinaciones posibles de consulta.
Para sintetizarlo: Si sólo tuvieses cuatro condiciones a seleccionar, necesitarías 16 queries diferentes para cubrir todas las combinaciones.
¿Te parece razonable hacer una para cada caso??

Crea la dinámicamente, ya sea por SP o programáticamente. Como te guste.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campo, query, select, siguiente, tabla
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:17.