Absence de données interrogées ne suggère pas actuellement présente . Un enregistrement manquant , cependant, sont des données qui pourraient ou devraient être présents, mais ne sont pas . Par exemple, les coordonnées du client et les commandes se trouvent dans les tables Customers et Orders . Une liste de clients est demandé, et vous , le programmeur , supposons que chaque client a un ordre. Fournir aux clients de commandes devrait fournir la liste des clients , mais ne peut -il? Les clients de l'inscription provenant de clients peuvent donner plus , ce qui suggère que certains clients ont des ordres disparus. Vous devez vous assurer que les clients sont absents commandes puis comprendre si cette circonstance est par conception ou un bug. Instructions
1
affichage des clients distincts dans le tableau de clients. Par exemple:
sélectionner des clients de C.CUSTOMERIDFROM DISTINCTS C
2
affichage clients distincts dans le tableau Commandes. Par exemple:
SELECT ORDONNE O.CUSTOMERIDFROM DISTINCTS O
3
Déterminer les clients avec les commandes manquantes en combinant les étapes 1 et 2 dans une sous-requête corrélée
< p. > SELECT DISTINCT C.CUSTOMERIDFROM CLIENTS CWHERE NOT EXISTS ( SELECT * FROM COMMANDE ulle part O.CUSTOMERID = C.CUSTOMERID )
existe est une fonction Oracle qui vérifie l' existence de dossiers de sous-requêtes renvoyées. Préfacer avec »et non« tests de l'absence de documents . Ici, la sous-requête correspond clients dans les deux tables. Les résultats des matches aller-retour, ce qui exclurait ceux assorti de CLCLEUNIK du jeu de résultat principal . Seulement CLCLEUNIK est avec aucune correspondance O.CUSTOMERID serait affiché.
4
Sinon, déterminer dossiers manquants à partir d'une vue composite de LOGOforcusotmer et tableaux de commande.
SELECT DISTINCT C.CUSTOMERIDFROM CLIENTS C COMMANDES ulle part C.CUSTOMERID = O.CUSTOMERID (+) et O.CUSTOMERID est nulle
Si vous pensez que le tableau de commande pourrait être absent dossiers , puis essayez cette requête pour afficher côte C.CUSTOMERID et O.CUSTOMERID à côte . Le (+ ) appelle une jointure externe gauche , qui indique Oracle pour afficher toutes les données correspondantes de la clause WHERE , plus ' S à partir de la table de gauche - main qui n'ont pas O.CUSTOMERID correspondant «toute C.CUSTOMERID s dans le tableau de droite.
< p> S'il ya ' s sans O.CUSTOMERID correspondant ' C.CUSTOMERID s , ils montrent avec des valeurs nulles pour le s inexistant O.CUSTOMERID ». Les lignes ayant ces zéros représentent les documents manquants de l'ordre.
Si la liste est trop longue pour l'inspection visuelle , la deuxième clause WHERE garantit que les résultats sont limités à s C.CUSTOMERID ' avec les commandes manquantes.