optimizar consulta

25/11/2003 - 17:41 por Tolo | Informe spam
hola,

estoy elaborando una función que me calcule el precio de un artículo.

Pues bién, lo que tengo q hacer es ir a mirar si existe un precio en la
tabla de PreciosxCliente y si no entonces devolver otro valor (por ejemplo
@PrecioBase) a través de la varibable @resultado.

Pues bién, mi intención es la de hacer:

if not exist(select @resultado=precio from PreciosxCliente where
fk_cliente=@micliente and fk_articulo=@miarticulo)
@resultado=@PrecioBase
endif

pero el tema es que no puedo asignar valor A @resultado en un exist, y por
ello me veo obligado a hacer:

if exist(select precio from PreciosxCliente where fk_cliente=@micliente and
fk_articulo=@miarticulo)
select @resultado=precio from PreciosxCliente where
fk_cliente=@micliente and fk_articulo=@miarticulo
else
@resultado=@PrecioBase
endif

¿como puedo optimizarlo?

-

ahora mientras escribia se me está ocurriendo hacer:

select @resultado=precio from PreciosxCliente where fk_cliente=@micliente
and fk_articulo=@miarticulo
if @@reccount=0 (o la variable que sea, no se)
@resultado=@PrecioBase
endif

¿como lo veis?


muchas gracias

Preguntas similare

Leer las respuestas

#1 Miguel Egea
25/11/2003 - 17:49 | Informe spam
prueba este script
use northwind
go
declare @codigo nchar(5)
select @codigo=customerid from Customers where CompanyName='Alfreds
Futterkiste'
print @codigo
if isnull(@codigo,'')=''
set @codigo='NOEXI'
print @codigo
set @codigo=null
select @codigo=customerid from Customers where CompanyName='Alfreds
Futterkist-e'
print @codigo
if isnull(@codigo,'')=''
set @codigo='NOEXI'
print @codigo

Saludos
Miguel Egea
" Tolo" escribió en el mensaje
news:
hola,

estoy elaborando una función que me calcule el precio de un artículo.

Pues bién, lo que tengo q hacer es ir a mirar si existe un precio en la
tabla de PreciosxCliente y si no entonces devolver otro valor (por ejemplo
@PrecioBase) a través de la varibable @resultado.

Pues bién, mi intención es la de hacer:

if not exist(select @resultado=precio from PreciosxCliente where
fk_cliente=@micliente and fk_articulo=@miarticulo)
@resultado=@PrecioBase
endif

pero el tema es que no puedo asignar valor A @resultado en un exist, y por
ello me veo obligado a hacer:

if exist(select precio from PreciosxCliente where fk_cliente=@micliente


and
fk_articulo=@miarticulo)
select @resultado=precio from PreciosxCliente where
fk_cliente=@micliente and fk_articulo=@miarticulo
else
@resultado=@PrecioBase
endif

¿como puedo optimizarlo?

-

ahora mientras escribia se me está ocurriendo hacer:

select @resultado=precio from PreciosxCliente where fk_cliente=@micliente
and fk_articulo=@miarticulo
if @@reccount=0 (o la variable que sea, no se)
@resultado=@PrecioBase
endif

¿como lo veis?


muchas gracias


Respuesta Responder a este mensaje
#2 ulises
25/11/2003 - 17:53 | Informe spam
Prueba con :

SELECT @resultado = ISNULL(precio, @PrecioBase) FROM ...

Saludos,
Ulises

...
select @resultado=precio from PreciosxCliente where


fk_cliente=@micliente
and fk_articulo=@miarticulo
if @@reccount=0 (o la variable que sea, no se)
@resultado=@PrecioBase
endif


...
Respuesta Responder a este mensaje
#3 ulises
25/11/2003 - 18:01 | Informe spam
Perdón tendría que ser :

SET @resultado = ISNULL(@resultado,@preciobase)
luego del select.

Saludos,
Ulises

select @resultado=precio from PreciosxCliente where


fk_cliente=@micliente
and fk_articulo=@miarticulo
if @@reccount=0 (o la variable que sea, no se)
@resultado=@PrecioBase
endif
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida