problema con select

22/11/2003 - 21:32 por Tolo | Informe spam
Hola

estoy haciendo una función qeu me devuelve el precio de un articulo a través
de la variable @pv, para ello necisto hacer el cálculo como:

if not exists (select @pv = preu_especial from t_PreusEspecials where
fk_article=@article and fk_tercer=@tercer)
select @pv = preu_venta from t_articles where id_article = @article

Pero no puedo en el mismo select q miro si existe asignar el valor a mi
variable, y tengo q hacer ...

if exists (select preu_especial from t_PreusEspecials where
fk_article=@article and fk_tercer=@tercer)
select @pv = preu_especial from t_PreusEspecials where
fk_article=@article and fk_tercer=@terce
else
select @pv = preu_venta from t_articles where id_article = @article


hay forma de mejorar esto???

gracias de nuevo
 

Leer las respuestas

#1 ulises
23/11/2003 - 06:31 | Informe spam
No, EXISTS solicita una subconsulta que no permite
claúsulas COMPUTE ni asignaciones a variables.

En todo caso puedes modificar la sentencia por algo así
(sin verificar).

SELECT COALESCE (preu_especial, preu_venta)
FROM t_articles a left join t_PreusEspecials p
ON ( a.fk_article = p.fk_article AND
a.fk_tercer = p.fk_tercer )
WHERE a.fk_article = @article
AND a.fk_tercer = @tercer

Saludos,
Ulises


Hola

estoy haciendo una función qeu me devuelve el precio de


un articulo a través
de la variable @pv, para ello necisto hacer el cálculo


como:

if not exists (select @pv = preu_especial from


t_PreusEspecials where
fk_article=@article and fk_tercer=@tercer)
select @pv = preu_venta from t_articles where


id_article = @article

Pero no puedo en el mismo select q miro si existe asignar


el valor a mi
variable, y tengo q hacer ...

if exists (select preu_especial from t_PreusEspecials


where
fk_article=@article and fk_tercer=@tercer)
select @pv = preu_especial from t_PreusEspecials


where
fk_article=@article and fk_tercer=@terce
else
select @pv = preu_venta from t_articles where


id_article = @article


hay forma de mejorar esto???

gracias de nuevo



.

Preguntas similares