Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   SQL Server (http://www.forosdelweb.com/f87/)
-   -   Consulta SQL complicada (http://www.forosdelweb.com/f87/consulta-sql-complicada-456767/)

refciao 15/01/2007 19:15

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????.

Andres95 16/01/2007 08:17

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

:arriba: un saludo!

u_goldman 16/01/2007 11:40

Re: Consulta SQL complicada
 
Cita:

Iniciado por refciao (Mensaje 1854963)
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


La zona horaria es GMT -6. Ahora son las 20:23.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.