mejorar select

19/11/2003 - 09:19 por Susana | Informe spam
hola, vereis tengo un update metido en un trigger bastante cañero, pero
resumiendo tengo algo como esto:

update T_lineasDocumento
set Basei = Inserted.precio_unitario*inserted.unidades, -- PU*unidades
total = (Inserted.precio_unitario*inserted.unidades)
+f_impuesto(Inserted.precio_unitario*inserted.unidades) -- Basei + Impuesto
de la Basei
from T_lineasDocumento inner join inserted on
inserted.id_linea=T_lineasDocumento .id_linea

Claro, aquí para hacer referencia cada vez a la Basei tengo que escribir el
cálculo entero. Ufff, esto se llega a hacer incomprensible, a parte que
algunos campos que se calculan no a partir de una simple suma o
multiplicación sino a partir de una función que me realiza una consulta
sobre toda la BD (tiempo de ejecución muy inferior al segundo, pero no
despreciable), entonces claro, me gustaría evitar el tener que llamar a esta
función varias veces dentro de un mismo update.

Si ya se que puedo usar campos calculados, pero esos campos luego no
aparecen en las consultas, con lo cual tendría que en cada select donde
quiera llamarlos volver a calcularlos (una locura). Si se que estan las
vistas y q podría definirlos ahí no se

No se, a mi me gustaría más poder hacer algo como:

declare @bi money

update T_lineasDocumento
set @bi= Inserted.precio_unitario*inserted.unidades, Basei = @bi,
total = @bi
+f_impuesto(Inserted.precio_unitario*inserted.unidades) -- Basei + Impuesto
de la Basei
from T_lineasDocumento inner join inserted on
inserted.id_linea=T_lineasDocumento .id_linea

lo cual hace mucho mas entendible el código, no?

gracias
 

Leer las respuestas

#1 José Raúl Fenollar Martínez
19/11/2003 - 09:26 | Informe spam
declare @bi money

set @bi= Inserted.precio_unitario*inserted.unidades

update T_lineasDocumento
set Basei = @bi,
total = @bi +f_impuesto(@bi) -- Basei + Impuesto de la Basei
from T_lineasDocumento inner join inserted on
inserted.id_linea=T_lineasDocumento .id_linea




" Susana" escribió en el mensaje
news:%
hola, vereis tengo un update metido en un trigger bastante cañero, pero
resumiendo tengo algo como esto:

update T_lineasDocumento
set Basei = Inserted.precio_unitario*inserted.unidades, --


PU*unidades
total = (Inserted.precio_unitario*inserted.unidades)
+f_impuesto(Inserted.precio_unitario*inserted.unidades) -- Basei +


Impuesto
de la Basei
from T_lineasDocumento inner join inserted on
inserted.id_linea=T_lineasDocumento .id_linea

Claro, aquí para hacer referencia cada vez a la Basei tengo que escribir


el
cálculo entero. Ufff, esto se llega a hacer incomprensible, a parte que
algunos campos que se calculan no a partir de una simple suma o
multiplicación sino a partir de una función que me realiza una consulta
sobre toda la BD (tiempo de ejecución muy inferior al segundo, pero no
despreciable), entonces claro, me gustaría evitar el tener que llamar a


esta
función varias veces dentro de un mismo update.

Si ya se que puedo usar campos calculados, pero esos campos luego no
aparecen en las consultas, con lo cual tendría que en cada select donde
quiera llamarlos volver a calcularlos (una locura). Si se que estan las
vistas y q podría definirlos ahí no se

No se, a mi me gustaría más poder hacer algo como:

declare @bi money

update T_lineasDocumento
set @bi= Inserted.precio_unitario*inserted.unidades, Basei = @bi,
total = @bi
+f_impuesto(Inserted.precio_unitario*inserted.unidades) -- Basei +


Impuesto
de la Basei
from T_lineasDocumento inner join inserted on
inserted.id_linea=T_lineasDocumento .id_linea

lo cual hace mucho mas entendible el código, no?

gracias



Preguntas similares