Por Geymer Morales Cruz

Compartiendo Información...

Insertar datos en una tabla mientras no exista en la otra – Oracle

Hola buenas, hoy día les compartiré algo que en algún momento les será útil a ustedes cuando necesiten insertar registros en una tabla pero que no existan en otra tabla. Pues bien supongamos que tenemos dos tablas una llamada VENTAS perteneciente al esquema CIA1 y la otra tabla llamada CLIENTE perteneciente al mismo esquema. Perfecto, recordarle que para efectos de explicárselos lo hice de esta manera por lo que ustedes lo adaptaran a su conveniencia.
Genial, teniendo claro lo anterior, supongamos que vamos a insertar todos los clientes en la tabla VENTAS siempre y cuando este cliente no esté  en esta tabla venta y pertenezca al departamento CONTABLE por lo que la query sería la siguiente:

INSERT INTO CIA1.VENTAS 
(CIA1.VENTAS.COD_CLIENTE,
CIA1.VENTAS.VENTA, 
CIA1.VENTAS.DIA,
CIA1.DEPARTAMENTO,
CIA1.VENTAS.INGRESADO_POR, 
CIA1.VENTAS.INGRESADO_EL)
SELECT 
A.COD_CLIENTE,
'N',
SYSDATE,
A.DEPARTAMENTO
'GMORALES',
SYSDATE
FROM CIA1.CLIENTE A
where
A.DEPARTAMENTO='CONTABLE'
AND not exists 
(SELECT * from CIA1.VENTAS where 
CIA1.VENTAS.DEPARTAMENTO='CONTABLE')

Explicación detallada: Como pueden ver en la consulta se hace la inserción mediante un select de los clientes del departamento CONTABLE y que no estén ya insertados en la tabla ventas, es decir los clientes que no hicieron ventas y  pertenecen al departamento CONTABLE son los que se insertaría en la tabla, otra punto importante es que para efectos de esta explicación utilice el not exist enfocado en la misma tabla VENTAS.
Espero que la explicación este un poco clara y entendible, recuerden que la idea es compartir de lo poco que sabemos ya ustedes adaptaran a sus necesidades.
Saludos…

0 comentarios: