consulta de condiciones multiples

12/08/2004 - 00:04 por arturo | Informe spam
Hola, como podria hacer una consulta con condiciones
multiples donde por ejemplo: podria ir de 1 a 5
condiciones, como podrias hacerlo esto en un store.

Gracias

Preguntas similare

Leer las respuestas

#6 arturo
12/08/2004 - 17:57 | Informe spam
Hola gracias por el ejemplo, tengo una duda.
los campos de consultas son Varchar, el utilizar Like no
vuelve lento al servidor ya que el Tabla es lo menos de 2
millones de registro.
Esta data es de solo los ultimos 3 meses , las anteriores
lo tengo en un tabla historica., y lo tengo indexado y
todo.
Gracias.



Hola Arturo,
A ver si te sirve este modelo que podrás adaptar a tus


necesidades.
Saludos... Liliana.

CREATE TABLE #test
(dato_num int,
dato_char varchar(20),
dato_fecha datetime)

INSERT #test
SELECT 1, 'Dato 1 ', '20040811' UNION ALL
SELECT 2, 'Dato 11', '20040812' UNION ALL
SELECT 3, 'Dato 3 ', '20040813' UNION ALL
SELECT 4, 'Dato 31', '20040814'
GO

DROP PROC #pr_Busqueda_Multiple
GO
CREATE PROCEDURE #pr_Busqueda_Multiple
@num INT ,
@char VARCHAR(20),
@fecha_desde DATETIME,
@fecha_hasta DATETIME

AS

SELECT dato_num, dato_char, dato_fecha
FROM #test
WHERE dato_num >= ISNULL(@num, 0)
AND dato_char LIKE ISNULL(@char + '%', '%')
AND dato_fecha BETWEEN CASE WHEN @fecha_desde IS NULL


THEN dato_fecha
ELSE @fecha_desde END
AND CASE WHEN @fecha_hasta IS NULL


THEN dato_fecha
ELSE @fecha_hasta END
GO

EXEC #pr_Busqueda_Multiple 3,NULL, '20040812', NULL

escribió en el


mensaje
news:448d01c48000$cfefc890$
ok, bueno, quiero hace una consulta en donde el usuario
pueda hacer busqueda por varios campos.
ejm:
nombre:
Curso:
fecha:

la consulta lo puede hacer por hacer cualquier campo, o
por 1 o por 2 o por los 3 campos.

La pregunta es como puedo hacer esto en un store




procedure.

Espero haberme explicado bien.
Gracias.

>Hola, como podria hacer una consulta con condiciones
>multiples donde por ejemplo: podria ir de 1 a 5
>condiciones, como podrias hacerlo esto en un store.
>
>Gracias
>.
>




.

Respuesta Responder a este mensaje
#7 Fernando España
12/08/2004 - 18:12 | Informe spam
Bueno yo lo hago asi, supongamos que tenemos un listado de clientes y
queremos un par de parametros que serian, pais y ciudad pero condicionados,
entonces la forma de hacerlo seria


create procedure Proc_Listado @pais char(3),@ciudad char(3)
as
Begin

Select id_cliente,
Nombre,
Ciudad,
Pais
From tbl_Clientes
where Pais= Case when @pais = 'N/A' then Pais else @Pais end
and Ciudad=case when @ciudad='N/A' then ciudad else @ciudad end
order by Nombre

return
End


para llamar al procedimiento es sencillo, unicamente en los parametros le
enviaras un N/A cuando quieras todos los de un pais o ciudad
o el valor correspondiente en su defecto, suerte. Creo que es una opcion mas
sencilla y funcional.



"Benjamín Mariscal" wrote in
message news:
Bueno por que no haces un sp donde le pases todos los valores de las
condiciones probables y despues las checas con un IF

Ej:

Create Procedure Filtra( @Filtro1 nvarchar, @Filtro2 int, etc...) AS
DECLARE @Condicion nvarchar(255)
SET @Condicion = 'WHERE '
IF @Filtro1 <> ''
Begin
SET @Condicion = @Condicion + ' Campo1 = ' + Valor
End

Etc...
y depsues ejecutas la instruccion con un exec


"arturo" wrote:

> Hola, como podria hacer una consulta con condiciones
> multiples donde por ejemplo: podria ir de 1 a 5
> condiciones, como podrias hacerlo esto en un store.
>
> Gracias
>
Respuesta Responder a este mensaje
#8 arturo
12/08/2004 - 18:28 | Informe spam
muchas gracias a todos. se resolvio el problema tanto de
la consulta como de la demora en ejecutar. seguis sus
ejemplos e indexe los campos de la condicion(la tabla
tiene 2 millones de registros).

Gracias.

Arturo.

Hola, como podria hacer una consulta con condiciones
multiples donde por ejemplo: podria ir de 1 a 5
condiciones, como podrias hacerlo esto en un store.

Gracias
.

Respuesta Responder a este mensaje
#9 Liliana Sorrentino
12/08/2004 - 18:39 | Informe spam
Hola Arturo,
Si tenés índice por el dato que consultás con Like, no tiene porqué ser más
lento, usará ese índice.
Liliana.
"arturo" escribió en el mensaje
news:51d001c48085$13b0b510$
Hola gracias por el ejemplo, tengo una duda.
los campos de consultas son Varchar, el utilizar Like no
vuelve lento al servidor ya que el Tabla es lo menos de 2
millones de registro.
Esta data es de solo los ultimos 3 meses , las anteriores
lo tengo en un tabla historica., y lo tengo indexado y
todo.
Gracias.



Hola Arturo,
A ver si te sirve este modelo que podrás adaptar a tus


necesidades.
Saludos... Liliana.

CREATE TABLE #test
(dato_num int,
dato_char varchar(20),
dato_fecha datetime)

INSERT #test
SELECT 1, 'Dato 1 ', '20040811' UNION ALL
SELECT 2, 'Dato 11', '20040812' UNION ALL
SELECT 3, 'Dato 3 ', '20040813' UNION ALL
SELECT 4, 'Dato 31', '20040814'
GO

DROP PROC #pr_Busqueda_Multiple
GO
CREATE PROCEDURE #pr_Busqueda_Multiple
@num INT ,
@char VARCHAR(20),
@fecha_desde DATETIME,
@fecha_hasta DATETIME

AS

SELECT dato_num, dato_char, dato_fecha
FROM #test
WHERE dato_num >= ISNULL(@num, 0)
AND dato_char LIKE ISNULL(@char + '%', '%')
AND dato_fecha BETWEEN CASE WHEN @fecha_desde IS NULL


THEN dato_fecha
ELSE @fecha_desde END
AND CASE WHEN @fecha_hasta IS NULL


THEN dato_fecha
ELSE @fecha_hasta END
GO

EXEC #pr_Busqueda_Multiple 3,NULL, '20040812', NULL

escribió en el


mensaje
news:448d01c48000$cfefc890$
ok, bueno, quiero hace una consulta en donde el usuario
pueda hacer busqueda por varios campos.
ejm:
nombre:
Curso:
fecha:

la consulta lo puede hacer por hacer cualquier campo, o
por 1 o por 2 o por los 3 campos.

La pregunta es como puedo hacer esto en un store




procedure.

Espero haberme explicado bien.
Gracias.

>Hola, como podria hacer una consulta con condiciones
>multiples donde por ejemplo: podria ir de 1 a 5
>condiciones, como podrias hacerlo esto en un store.
>
>Gracias
>.
>




.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida