Sådan Find Missing Records Brug af SQL

SQL teknikker til at løse gåden om manglende registreringer. blå puslespil baggrund, et stykke savnet billede ved Stasys Eidiejus fra Fotolia.com

Manglende forespurgte data kun tyder på nuværende tidspunkt ikke er til stede.En manglende post, dog er data, som kunne eller burde være til stede, men er ikke.For eksempel, kundeoplysninger og ordrer bor i borde kunder og ordrer.En kunde liste er anmodet om, og du, programmøren, antager hver kunde har en ordre.Forudsat kunder fra Ordrer bør give den korrekte kundeliste, men gør det?Notering kunder fra Kunderne kan give mere, hvilket tyder på nogle kunder har mangler ordrer.Du skal fastslå, hvilke kunder der mangler ordrer, og derefter forstå, hvis denne omstændighed er tilsigtet eller en fejl.

Instruktioner

  1. Display distinkte kunder i KUNDER tabellen.For eksempel:

    SELECT DISTINCT C.CUSTOMERID
    fra kunder C

  2. Display distinkte kunder i ORDRER tabel.For eksempel:

    SELECT DISTINCT O.CUSTOMERID
    FRA ORDRER O

  3. Bestem kunder med manglende ordrer ved at kombinere trin 1 og 2 i e

    n korreleret underforespørgsel.

    SELECT DISTINCT C.CUSTOMERID
    fra kunder C
    HVOR IKKE EXISTS
    (SELECT *

    FRA ORDRER O

    WHERE O.CUSTOMERID = C.CUSTOMERID)

    eksisterer, er en Oracle-funktion, der tester for eksistensen af ​​returnerede underforespørgsel optegnelser.Forord med ", ikke" test for fraværet af registreringer.Her underforespørgslen matcher kunder i begge tabeller.Kampe returnere resultater, hvilket ville udelukke dem matchet CustomerID er fra de vigtigste resultatsæt.Kun CustomerID er uden O.CUSTOMERID match ville blive vist.

  4. Alternativt, fastlægge manglende poster fra en sammensat syn på cusotmer og orden borde.

    SELECT DISTINCT C.CUSTOMERID
    fra kunder C, ORDRER O
    WHERE C.CUSTOMERID = O.CUSTOMERID (+)

    og O.CUSTOMERID er null

    Hvis du har mistanke ordenen tabel kunne mangle optegnelser, så prøv denne forespørgsel tilVis C.CUSTOMERID og O.CUSTOMERID side om side.Den (+) påberåber sig en venstre ydre join, som fortæller Oracle at vise alle matchende data fra WHERE erklæring plus enhver C.CUSTOMERID er fra venstre tabel, der har ingen matchende O.CUSTOMERID er i højre side bordet.

    Hvis der er C.CUSTOMERID er med ingen matchende O.CUSTOMERID s, vil de vise med null værdier for ikke-eksisterende O.CUSTOMERID s.Rækkerne har sådanne nuller repræsenterer de manglende orden poster.

    Hvis listen er for lang til visuel inspektion, den anden HVOR redegørelse sikrer resultaterne er begrænset til C.CUSTOMERID s med manglende ordrer.

Tips & amp;Advarsler

  • Forespørgslen anses korreleret fordi underforespørgslen referencer C.CUSTOMER, der findes i en tabel ikke henvises til i underforespørgslen.Oracle vil behandle underforespørgslen én post ad gangen, forsøger at matche hver O.CUSTOMER til en C.CUSTOMER i rækkefølge, returnerer en null eller ikke er nul post afhængigt kampresultatet.
  • En ukorrelerede underforespørgsel har ingen reference til en mark uden for sine referencer tabeller.Dette tvinger Oracle til at køre underforespørgslen og matche hele sat til den vigtigste forespørgslen resultat, på udkig efter kampe til WHERE betingelser.
  • Undlade at fange forsvundne journaler kan påvirke din endelige rapport ved ikke at præsentere det fulde omfang af data.

Ressourcer

  • En SQL analogi af manglende data
533
0
3
Computer Programmeringssprog