Comment trouver des enregistrements à l`aide de sql manquantes

techniques SQL pour résoudre le casse-tête des dossiers manquants.

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 résident dans les tables clients et commandes. Une liste de clients est demandée, et vous, le programmeur, supposons que chaque client a un ordre. Fournir aux clients de commandes devraient fournir la liste des clients correcte, mais le fait? Listing des clients de clients peut produire plus, ce qui suggère des ordres certains clients ont disparus. Vous devez savoir que les clients manquent commandes et comprendre si cette circonstance est par la conception ou un bug.

  • Afficher les clients distincts dans le tableau des clients. Par exemple:

    SELECT DISTINCT C.CUSTOMERID
    DE CLIENTS C

  • Afficher les clients distincts dans le tableau de commandes. Par exemple:

    SELECT DISTINCT O.CUSTOMERID
    DE COMMANDES O




  • Déterminer les clients avec des commandes manquantes en combinant les étapes 1 et 2 dans une sous-requête corrélée.

    SELECT DISTINCT C.CUSTOMERID
    DE CLIENTS C
    WHERE NOT EXISTS
    (SELECT *

    DE COMMANDES O 

    WHERE O.CUSTOMERID = C.CUSTOMERID)

    EXISTS est une fonction Oracle qui vérifie l`existence de dossiers de sous-requêtes renvoyées. préfacer avec "NE PAS" tests pour l`absence de documents. Ici, la sous-requête correspond à des clients dans les deux tables. Matches renvoient des résultats, ce qui exclurait les appariés CUSTOMERID de de la principale jeu de résultats. Seulement CUSTOMERID de sans match de O.CUSTOMERID serait affiché.

  • Vous pouvez également déterminer les enregistrements manquants à partir d`une vue composite de tables de cusotmer et l`ordre.

    SELECT DISTINCT C.CUSTOMERID
    DE CLIENTS C, ORDONNANCES O
    WHERE C.CUSTOMERID = O.CUSTOMERID (+)

     et O.CUSTOMERID est nulle

    Si vous pensez que le tableau de commande pourrait être des documents manquants, puis essayez cette requête pour afficher C.CUSTOMERID et O.CUSTOMERID côte à côte. Le (+) invoque une jointure externe gauche, qui indique à Oracle pour afficher toutes les données correspondant à partir de l`instruction WHERE plus tout C.CUSTOMERID de partir de la gauche, table de main qui n`ont pas O.CUSTOMERID correspondants de la table de droite.

    S`il y a C.CUSTOMERID de sans O.CUSTOMERID correspondants de, ils montrent avec des valeurs nulles pour le inexistant O.CUSTOMERID de. Les lignes ayant de telles valeurs NULL représentent les enregistrements de commande manquants.

    Si la liste est trop longue pour l`inspection visuelle, la seconde instruction WHERE assure les résultats sont limités à C.CUSTOMERID est avec les commandes manquantes.

Conseils & Avertissements

  • La requête est considérée comme corrélé car les références des sous-requêtes C.CUSTOMER, qui existe dans une table non référencée dans la sous-requête. Oracle va traiter la sous-requête d`un enregistrement à la fois, en essayant de faire correspondre chaque O.CUSTOMER à un C.CUSTOMER successivement, retournant un enregistrement null null ou non en fonction du résultat du match.
  • Une sous-requête décorrélées n`a pas de référence à un champ en dehors de ses tables de références. Cela force Oracle pour exécuter le sous-requête et correspondre à l`ensemble des résultats pour la requête principale, la recherche de correspondances aux conditions de la clause WHERE.
  • A défaut d`attraper des documents manquants peuvent influer sur votre rapport final en ne présentant pas la portée complète des données.

AUTRES

» » » » Comment trouver des enregistrements à l`aide de sql manquantes