Cómo crear una vista que haga referencia a sí misma (recursiva)
Tengo una tabla con las siguientes columnas:
id | fx | valor
Necesito crear una vista con las siguientes columnas:
id | fx | valor | cantidad | fxActualizada | valorActualizado | cantidadActualizada
cantidad = valor * fx -> no hay problema, funciona bien;
fxActualizada = un valor que obtengo de otra tabla con una consulta -> no hay problema, funciona bien;
valorActualizado = un valor que obtengo de otra tabla con una consulta -> no hay problema, funciona bien
cantidadActualizada = necesito hacer que esta columna sea la fxActualizada * valorActualizado de esta vista.
El problema es que no quiero hacer otra consulta a las otras tablas, como lo hice para las columnas anteriores … ¿Hay alguna forma en que pueda referenciar esta vista, para poder hacer algo como esto.fxActualizada * esto.valorActualizado?
Creo que necesito hacer algo recursivo de alguna manera, pero nunca lo he usado realmente y estoy un poco perdido.
davy.ai
Para hacer referencia a una vista dentro de sí misma, se puede utilizar una auto-asociación (self-join) en la consulta de la vista. Aquí hay un ejemplo de cómo hacerlo:
En este ejemplo, unimos la tabla
my_table
con ella misma y la nombramos comot1
yt2
. Esto nos permite hacer referencia al valorfx
de la otra tabla (t2.fx
) sin necesidad de hacer otra consulta.Para calcular
updatedAmount
, también unimosmy_table
amy_other_table
y lo representamos comot3
. Luego multiplicamos el valor defx
det2
con el valorvalue
det3
para calcular la cantidad actualizada.Esto nos permite hacer referencia a la vista dentro de sí misma sin necesidad de consultar las otras tablas nuevamente.