¿Vale la pena crear una variable tabla en este caso?

24/05/2007 - 12:03 por Victor | Informe spam
Hola a tod@s.

Tengo una consulta, que no es que sea muy pesada, pero la tengo utilizo 4
veces en un select union all, donde lo que cambian son los parámetros del
where:

select 1 from tabla1 inner join tabal2 on a = b
where salida = @ida and ofe = 0
union all
select 1 from tabla1 inner join tabal2 on a = b
where salida = @llegada and ofe = 0
union all
select 1 from tabla1 inner join tabal2 on a = b
where salida = @ida and ofe <> 0
union all
select 1 from tabla1 inner join tabal2 on a = b
where salida = @llegada and ofe <> 0

Había pensado guardar los datos del select1 (sin tener en cuenta las
condiciones) en una variable tabla, y sobre ésta realizar las uniones:

select 1 from @tabla1
where salida = @ida and ofe = 0
union all
select 1 from @tabla1
where salida = @llegada and ofe = 0
union all
select 1 from @tabla1
where salida = @ida and ofe <> 0
union all
select 1 from @tabla1
where salida = @llegada and ofe <> 0

¿Vale la pena?

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
24/05/2007 - 15:08 | Informe spam
Victor,

Trata:

select 1
from tabla1 inner join tabal2 on a = b
where salida in (@ida, @llegada)
go

No veo porque usar la column [ofe], ya que primero usas [ofe] = 0 y luego la
misma sentencia con [ofe] != 0.


select 1 from tabla1 inner join tabal2 on a = b
where salida = @ida and ofe = 0
union all
select 1 from tabla1 inner join tabal2 on a = b
where salida = @ida and ofe <> 0



Esto equivale a:

select 1 from tabla1 inner join tabal2 on a = b
where salida = @ida


AMB

"Victor" wrote:

Hola a

Tengo una consulta, que no es que sea muy pesada, pero la tengo utilizo 4
veces en un select union all, donde lo que cambian son los parámetros del
where:

select 1 from tabla1 inner join tabal2 on a = b
where salida = @ida and ofe = 0
union all
select 1 from tabla1 inner join tabal2 on a = b
where salida = @llegada and ofe = 0
union all
select 1 from tabla1 inner join tabal2 on a = b
where salida = @ida and ofe <> 0
union all
select 1 from tabla1 inner join tabal2 on a = b
where salida = @llegada and ofe <> 0

Había pensado guardar los datos del select1 (sin tener en cuenta las
condiciones) en una variable tabla, y sobre ésta realizar las uniones:

select 1 from @tabla1
where salida = @ida and ofe = 0
union all
select 1 from @tabla1
where salida = @llegada and ofe = 0
union all
select 1 from @tabla1
where salida = @ida and ofe <> 0
union all
select 1 from @tabla1
where salida = @llegada and ofe <> 0

¿Vale la pena?

Muchas gracias.



Respuesta Responder a este mensaje
#2 Victor
24/05/2007 - 18:00 | Informe spam
Vale.

Faltan más datos, jejeje.

Si ofe = 0, el where tiene unas condiciones, y si es <> 0 tiene otras.


"Alejandro Mesa" escribió en el
mensaje news:
Victor,

Trata:

select 1
from tabla1 inner join tabal2 on a = b
where salida in (@ida, @llegada)
go

No veo porque usar la column [ofe], ya que primero usas [ofe] = 0 y luego


la
misma sentencia con [ofe] != 0.


> select 1 from tabla1 inner join tabal2 on a = b
> where salida = @ida and ofe = 0
> union all
> select 1 from tabla1 inner join tabal2 on a = b
> where salida = @ida and ofe <> 0

Esto equivale a:

select 1 from tabla1 inner join tabal2 on a = b
where salida = @ida


AMB

"Victor" wrote:

> Hola a
>
> Tengo una consulta, que no es que sea muy pesada, pero la tengo utilizo


4
> veces en un select union all, donde lo que cambian son los parámetros


del
> where:
>
> select 1 from tabla1 inner join tabal2 on a = b
> where salida = @ida and ofe = 0
> union all
> select 1 from tabla1 inner join tabal2 on a = b
> where salida = @llegada and ofe = 0
> union all
> select 1 from tabla1 inner join tabal2 on a = b
> where salida = @ida and ofe <> 0
> union all
> select 1 from tabla1 inner join tabal2 on a = b
> where salida = @llegada and ofe <> 0
>
> Había pensado guardar los datos del select1 (sin tener en cuenta las
> condiciones) en una variable tabla, y sobre ésta realizar las uniones:
>
> select 1 from @tabla1
> where salida = @ida and ofe = 0
> union all
> select 1 from @tabla1
> where salida = @llegada and ofe = 0
> union all
> select 1 from @tabla1
> where salida = @ida and ofe <> 0
> union all
> select 1 from @tabla1
> where salida = @llegada and ofe <> 0
>
> ¿Vale la pena?
>
> Muchas gracias.
>
>
>
Respuesta Responder a este mensaje
#3 PablodeGerli
24/05/2007 - 19:31 | Informe spam
select 1 from tabla1 inner join tabal2 on a = b
where
(salida = @ida and ofe = 0 ) or
(salida = @llegada and ofe = 0 ) or
(salida = @ida and ofe <> 0 ) or
(salida = @llegada and ofe <> 0 )
aunque mejor creo seria ver que otras condiciones estas usando porque con
esta info a simple vista seria
((salida = @ida or salida = @llegada) and ofe = 0 ) or
((salida = @ida or salida = @llegada) and ofe <> 0 ) or
ahora si a cada renglon de estos le tenes que seguir agregando filtros es
otra cosa


"Victor" escribió en el mensaje
news:
Vale.

Faltan más datos, jejeje.

Si ofe = 0, el where tiene unas condiciones, y si es <> 0 tiene otras.


"Alejandro Mesa" escribió en el
mensaje news:
Victor,

Trata:

select 1
from tabla1 inner join tabal2 on a = b
where salida in (@ida, @llegada)
go

No veo porque usar la column [ofe], ya que primero usas [ofe] = 0 y luego


la
misma sentencia con [ofe] != 0.


> select 1 from tabla1 inner join tabal2 on a = b
> where salida = @ida and ofe = 0
> union all
> select 1 from tabla1 inner join tabal2 on a = b
> where salida = @ida and ofe <> 0

Esto equivale a:

select 1 from tabla1 inner join tabal2 on a = b
where salida = @ida


AMB

"Victor" wrote:

> Hola a
>
> Tengo una consulta, que no es que sea muy pesada, pero la tengo utilizo


4
> veces en un select union all, donde lo que cambian son los parámetros


del
> where:
>
> select 1 from tabla1 inner join tabal2 on a = b
> where salida = @ida and ofe = 0
> union all
> select 1 from tabla1 inner join tabal2 on a = b
> where salida = @llegada and ofe = 0
> union all
> select 1 from tabla1 inner join tabal2 on a = b
> where salida = @ida and ofe <> 0
> union all
> select 1 from tabla1 inner join tabal2 on a = b
> where salida = @llegada and ofe <> 0
>
> Había pensado guardar los datos del select1 (sin tener en cuenta las
> condiciones) en una variable tabla, y sobre ésta realizar las uniones:
>
> select 1 from @tabla1
> where salida = @ida and ofe = 0
> union all
> select 1 from @tabla1
> where salida = @llegada and ofe = 0
> union all
> select 1 from @tabla1
> where salida = @ida and ofe <> 0
> union all
> select 1 from @tabla1
> where salida = @llegada and ofe <> 0
>
> ¿Vale la pena?
>
> Muchas gracias.
>
>
>




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