Tomar datos de 3 tablas y formar un cursor

Tengo estas 3 tablas:

---

create table Movimiento_Bodega
( articulo numeric(10),
movimiento numeric(10),
cantidad numeric(10),
fecha date
);
Create table Compras
( Factura numeric(10),
articulo numeric(10),
cantidad numeric(10),
fecha date
);
Create table Ventas
( Factura numeric(10),
articulo numeric(10),
cantidad numeric(10),
fecha date
);

---

Y necesito formar un cursor con los datos de las 3 tablas para luego hacer una actualización por lotes como parte de un ejercicio, sé hacer un cursor que tome los valores de 1 tabla pero no como tomar de 3 o mas, ¿cómo puedo hacerlo?

1 respuesta

Respuesta
1

Tienes que hacer un join con las 3 tablas. Por ej:

Cursor Ejemplo IS

Select * from

ventas V, compras C, Movimiento_Bodega MB

Where v.factura = c.factura

And MB.factura = v.factura

And v.articulo = c.articulo

And MB.articulo = v.articulo;

En el caso que algún join no se cumpla tendrías que indicárselo con un outer join (+)

ya probé tu solución pero no llego exactamente a lo que requiero, por ejemplo cada registro del cursor con tu solución tiene esto

--

c1

v.factura/v.articulo/v.cantidad/v.fecha/c.factura/c.articulo/c.cantidad/c.fecha/mb.articulo/mb.movimiento/mb.cantidad/mb.fecha

--

sin embargo lo que pretendo tener en cada registro es algo como esto

c1(factura,articulo,cantidad,fecha,movimiento)

y que un registro de venta sea:

v.factura/v.articulo/v.cantidad/v.fecha/null

y un registro de movimiento de bodega sea:

null/mb.articulo/mb.movimiento/mb.cantidad/mb.fecha

para así poder recorrer después el cursor e ir actualizando la base de datos

¿Es decir que quieres un registro distinto por cada tabla?

Si quieres un registro por tabla seria así

select factura,articulo,cantidad,fecha,movimiento

From compras

Union all

select factura,articulo, cantidad, fecha, null

From ventas

Union all

select
null, articulo, movimiento, cantidad, fecha

from movimiento_bodega

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas