0Cuántas veces hemos querido comparar 2 tablas, saber que registros de una tabla NO están en la otra y viceversa. Puedes hacer un programa, generando el resultado en otra tabla o en un reporte, pero eso te toma un tiempo. O también puedes hacer un Query.
Algo muy práctico para hacer esto resulta usar la sentencia SELECT del SQL.
Sino estas muy familiarizado con el estándar ANSI (LEFT JOIN, RIGHT JOIN) puedes recurrir a la clausula EXCEPTION JOIN. Personalmente yo uso esta última alternativa.
SELECT A.*, B.*
FROM MILIBRERIA/ARCHIVO1 A EXCEPTION JOIN MILIBRERIA/ARCHIVO2 B
ON A.CAMPO1 = B.CAMPO1
En este ejemplo, la clausula EXCEPTION JOIN muestra como resultado los registros de la tabla ARCHIVO1 que NO se encuentran en la tabla ARCHIVO2. Y como estamos seleccionando los campos de ambas tablas, los registros de la tabla ARCHIVO2 se muestran en NULL.
Situar en línea . . . . . . ....+....1....+....2....+....3....+....4....+....5....+....6. CAMPO1 CAMPO2 CAMPO3 CAMPO1 CAMPO2 111 Jose Vasquez 15.00 - - 222 Edwin Sanchez 5.00 - - ******** Fin de datos ******** |
En este ejemplo, la clausula EXCEPTION JOIN muestra como resultado los registros de la tabla ARCHIVO1 que NO se encuentran en la tabla ARCHIVO2. Y como estamos seleccionando los campos de ambas tablas, los registros de la tabla ARCHIVO2 se muestran en NULL.
Ahora mostremos los registros de ARCHIVO2 que no están en ARCHIVO1
SELECT A.*, B.*
FROM MILIBRERIA/ARCHIVO2 B EXCEPTION JOIN MILIBRERIA/ARCHIVO1 A
ON B.CAMPO1 = A.CAMPO1
Situar en línea . . . . . . ....+....1....+....2....+....3....+....4....+....5....+....6....+... CAMPO1 CAMPO2 CAMPO3 CAMPO1 CAMPO2 - - - 333 Sergio Gonzales - - - 444 Cesar Ramirez ******** Fin de datos ******** |
La tabla que se declara a la izquierda de la clausula EXCEPTION JOIN es la tabla primaria, es decir, la tabla que contiene los registros que NO se encuentren en la tabla de la derecha.
Si deseamos tener los registros que NO estén en ambas tablas, o sea, los registros no COINCIDENTES entre ambas tablas, solo nos basta unir ambas sentencias SELECT con la clausula UNION
SELECT A.*, B.*
FROM MILIBRERIA/ARCHIVO1 A EXCEPTION JOIN MILIBRERIA/ARCHIVO2 B
ON A.CAMPO1 = B.CAMPO1
UNION
SELECT A.*, B.*
FROM MILIBRERIA/ARCHIVO2 B EXCEPTION JOIN MILIBRERIA/ARCHIVO1 A
ON B.CAMPO1 = A.CAMPO1 Situar en línea . . . . . . ....+....1....+....2....+....3....+....4....+....5....+....6....+... CAMPO1 CAMPO2 CAMPO3 CAMPO1 CAMPO2 111 Jose Vasquez 15.00 - - 222 Edwin Sanchez 5.00 - - - - - 333 Sergio Gonzales - - - 444 Cesar Ramirez ******** Fin de datos ******** |
Nota: En la clausula ON puedes indicar los campos que desees comparar, adicionalmente puedes considerar condiciones en la clausula WHERE.
El INNER JOIN te recupera los registros coincidentes entre ambas tablas
excelente viejo, pero existe una forma de buscar los registros modificados. SQL tendra algun comando que realice esa tarea?
ResponderEliminarojala me puedas responder a cristopher.vargas@gmail.com.
Muchas Gracias