Tecnología

Inicio

¿Cómo encontrar Missing registros utilizando SQL

¿Cómo encontrar Missing registros utilizando SQL


La ausencia de datos consultados no sólo se sugiere actualmente presentes. Un registro que faltan, sin embargo, es un dato que podría o debería estar presente, pero no lo es. Por ejemplo, los datos del cliente y las órdenes residen en las tablas clientes y pedidos. Se solicita una lista de clientes, y usted, el programador, suponer que cada cliente tiene un orden. Proporcionar a los clientes de los pedidos deben proporcionar la lista de cliente correcto, pero lo hace? Listado de clientes de clientes puede rendir más, lo que sugiere órdenes de algunos clientes han desaparecidos. Debe determinar qué clientes están perdiendo pedidos y luego entender si esta circunstancia es por diseño o un error.

Instrucciones

1 Mostrar distintos clientes de la tabla CLIENTES. Por ejemplo:

SELECT DISTINCT C.CUSTOMERID
C de clientes

2 Mostrar distintos clientes de tabla Pedidos. Por ejemplo:

SELECT DISTINCT O.CUSTOMERID
DE ÓRDENES O

3 Determinar los clientes con pedidos que faltan mediante la combinación de los pasos 1 y 2 en una subconsulta correlacionada.

SELECT DISTINCT C.CUSTOMERID
C de clientes
DONDE NO EXISTE
(SELECT *

FROM ORDERS O

DONDE O.CUSTOMERID = C.CUSTOMERID)

Existe es una función de Oracle que las pruebas de la existencia de registros devueltos subconsulta. Como prefacio con las pruebas "y no" para la ausencia de registros. Aquí, la subconsulta coincide con los clientes en ambas tablas. Partidos devuelven los resultados, lo que excluiría los igualado CUSTOMERID de del conjunto de resultados principal. Sólo CUSTOMERID del partido sin O.CUSTOMERID se mostraría.

4 Por otra parte, determinar que faltan registros de una vista compuesta de mesas cusotmer y el orden.

SELECT DISTINCT C.CUSTOMERID
De clientes de C, O PEDIDOS
DONDE C.CUSTOMERID = O.CUSTOMERID (+)

and O.CUSTOMERID is null

Si sospecha la tabla Order podría registros encuentra, entonces probar esta consulta para mostrar el lado C.CUSTOMERID y O.CUSTOMERID al lado del otro. El (+) invoca una combinación externa izquierda, que le dice a Oracle para mostrar todos los datos que corresponden a partir de la declaración DONDE más cualquier de C.CUSTOMERID de la tabla de la izquierda que no tienen de O.CUSTOMERID coincidentes en la tabla del lado derecho.

Si hay C.CUSTOMERID de sin O.CUSTOMERID de características determinadas, que se muestran con valores nulos para la inexistente O.CUSTOMERID de. Las filas que tienen tales valores nulos representan los registros de pedidos que faltan.

Si la lista es demasiado larga para la inspección visual, la segunda sentencia WHERE garantiza los resultados se limitan a C.CUSTOMERID de las órdenes que faltan.

Consejos y advertencias

  • La consulta se considera correlacionado porque la sub consulta hace referencia C.Customer, que existe en una mesa no referenciada en la sub. Oracle va a procesar la subconsulta un registro a la vez, en un intento para que coincida con cada O.CUSTOMER a un C.Customer en sucesión, devolver un registro null o no en función del resultado del partido.
  • Una subconsulta sin correlación no hace referencia a un campo fuera de sus tablas de referencias. Esto obliga a Oracle para ejecutar la sub consulta y combinar todo el conjunto de resultados de la consulta principal, en busca de coincidencias con las condiciones de la cláusula WHERE.
  • El no poder coger registros faltantes pueden afectar a su informe final al no presentar el alcance completo de los datos.