Ausencia de datos consultados sólo actualmente no sugiere presentes. Un registro que falta, sin embargo, son datos que podrían o deberían estar presentes , 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, asumir cada cliente tiene una orden. Proporcionar a los clientes de órdenes debe proporcionar la lista al cliente correcto, pero lo hace? Listado de clientes Los clientes pueden obtener más , lo que sugiere que algunos clientes han desaparecido órdenes. Usted debe asegurarse de que los clientes están perdiendo pedidos y entender si esta circunstancia es por diseño o un error . Instrucciones
1
Display clientes distintos en la tabla CLIENTES. Por ejemplo :
clientes selectos C.CUSTOMERIDFROM DISTINTAS C
2
Display clientes distintos en la tabla Pedidos. Por ejemplo :
SELECCIONAR LAS ÓRDENES O.CUSTOMERIDFROM DISTINTAS O
3
Determine los clientes con pedidos perdidos mediante la combinación de los pasos 1 y 2 en una subconsulta correlacionada
< p . > SELECT DISTINCT C.CUSTOMERIDFROM CLIENTES CWHERE NOT EXISTS (SELECT * FROM PEDIDOS OWHERE O.CUSTOMERID = C.CUSTOMERID )
EXISTE
es una función de Oracle que las pruebas de la existencia de registros de la subconsulta devueltos. Como prefacio a " NO" pruebas de la ausencia de registros . En este caso, la subconsulta coincide con los clientes en ambas tablas. Devuelven resultados Partidos, lo que excluye los igualado CUSTOMERID la del conjunto de resultados principales . Sólo CUSTOMERID de sin partido O.CUSTOMERID se mostraría .
4
alternativa, determinar los registros que faltan de una vista compuesta de cusotmer y mesas orden.
SELECT DISTINCT C.CUSTOMERIDFROM CLIENTES C , ÓRDENES OWHERE C.CUSTOMERID = O.CUSTOMERID (+ ) y O.CUSTOMERID es nula
Si sospecha que la tabla Order podía faltar los registros , a continuación, intente esta consulta para visualizar de lado C.CUSTOMERID y O.CUSTOMERID por lado . El (+ ) invoca una combinación externa izquierda, que le dice a Oracle para mostrar todos los datos coincidentes de la sentencia WHERE más cualquier C.CUSTOMERID ' s de la tabla de la izquierda que no tienen O.CUSTOMERID juego ' s en la tabla de la derecha .
< p> Si hay ' s sin O.CUSTOMERID juego ' C.CUSTOMERID s , se muestran con valores nulos para el inexistente O.CUSTOMERID ' s . 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 asegura que los resultados se limitan a s C.CUSTOMERID ' con las órdenes que faltan.