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

Consulta SQL complicada

Estas en el tema de Consulta SQL complicada en el foro de SQL Server en Foros del Web. Resulta que estoy haciendo una aplicación web en asp, con visual c# y bases de datos sql server 2000. En mi aplicacion hay 4 cajas ...
  #1 (permalink)  
Antiguo 15/01/2007, 19:15
 
Fecha de Ingreso: diciembre-2006
Ubicación: España
Mensajes: 57
Antigüedad: 17 años, 4 meses
Puntos: 0
Consulta SQL complicada

Resulta que estoy haciendo una aplicación web en asp, con visual c# y bases de datos sql server 2000. En mi aplicacion hay 4 cajas de texto, supongamos provincia, nombre, empleados, facturacion, el usuario puede escribir datos en 1 sola caja, en 2, en 3 o en las 4, para realizar una busqueda de empresas, dependiendo de el/los dato/s que conozca. Pues bien yo quiero que el sistema me realice una busqueda, pero no lo consigo ya que no se lo que poner en el Where. Si pongo por ejemplo WHERE Nombre=@Nombre AND .... , se me fastidia porque si en una caja no hay valor la consulta ya no devuelve nada, si pongo WHERE Nombre=@Nombre OR ...., tampoco me sirve porque me duelve filas que cumplen uno o otro requisito, y tienen que cumplir los dos. Alguna idea para solucionarlo????.
  #2 (permalink)  
Antiguo 16/01/2007, 08:17
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: Consulta SQL complicada

Si cuando el usuario no teclea nada, mandas una cadena vacia, puedes filtrarlo con...

Código:
select * 
from    mitabla
Where  nombre = Case when @Nombre = '' Then Nombre Else @Nombre End

Si cuando el usuario no teclea nada, mandas un nulo, puedes filtrarlo con...

Código:
select * 
from    mitabla
Where  nombre = isnull(@Nombre,Nombre)


la misma operacion para los otros tres campos...agregandolos con un AND

un saludo!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 16/01/2007, 11:40
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Re: Consulta SQL complicada

Cita:
Iniciado por refciao Ver Mensaje
Resulta que estoy haciendo una aplicación web en asp, con visual c# y bases de datos sql server 2000. En mi aplicacion hay 4 cajas de texto, supongamos provincia, nombre, empleados, facturacion, el usuario puede escribir datos en 1 sola caja, en 2, en 3 o en las 4, para realizar una busqueda de empresas, dependiendo de el/los dato/s que conozca. Pues bien yo quiero que el sistema me realice una busqueda, pero no lo consigo ya que no se lo que poner en el Where. Si pongo por ejemplo WHERE Nombre=@Nombre AND .... , se me fastidia porque si en una caja no hay valor la consulta ya no devuelve nada, si pongo WHERE Nombre=@Nombre OR ...., tampoco me sirve porque me duelve filas que cumplen uno o otro requisito, y tienen que cumplir los dos. Alguna idea para solucionarlo????.
Mmmhhh bueno, salvo lo que te dijeron, si te entendí bien, tu problema es generar una consulta dinámica dependiendo de los valores de tu aplicación que puede ser 1, 2, 3, 4 o ninguno cierto?

Esto más que SQL es como manejes la creación de tu consulta dentro de tu aplicación, regularmente lo que se hace, es basado en tus valores y valiéndote de un contador creas esa consulta...la lógica más o menos es la siguiente:

Código:
//C#
int argCount = 0;
StringBuilder query = new StringBuilder();
query.Append("SELECT campos FROM tabla ");

if ( valor1.length > 0 )
{
   if ( argCount > 0 )
     query.Append(" AND ");
   else
     query.Append(" WHERE ");

   query.Append(" campo1 = @valor1 ");
   argCount++;
}
Y así sucesivamente para cada valor.


Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
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 12:04.