Manglende forespørges kun data tyder i øjeblikket ikke til stede. En manglende post , dog er data, som kan eller bør være til stede , men er ikke . For eksempel bor kundeoplysninger og ordrer i tabeller Kunder og Ordrer . En kunde liste der anmodes , og dig, programmør, antager hver kunde har en ordre. Forudsat kunder fra ordrer bør give den korrekte kundeliste , men gør det? Listing kunder fra Kunderne kan give mere , hvilket tyder på nogle kunder har mangler ordrer. Du skal undersøge , hvilke kunder der mangler ordrer, og derefter forstå, hvis denne omstændighed er tilsigtet eller en fejl . Instruktioner
1
Display distinkte kunder i tabellen Kunder . For eksempel : Hej
select distinct C.CUSTOMERIDFROM KUNDER C
2
Display særskilte kunder i tabellen Ordrer. For eksempel : Hej
select distinct O.CUSTOMERIDFROM ORDRER O
3
Bestem kunder med manglende ordrer ved at kombinere trin 1 og 2 i en korreleret underforespørgsel
< p . > SELECT DISTINCT C.CUSTOMERIDFROM KUNDER CWHERE NOT EXISTS ( SELECT * FROM Ordrer OWHERE O.CUSTOMERID = C.CUSTOMERID )
eksisterer, er en Oracle -funktion , der tester for tilstedeværelsen af returnerede underforespørgsel optegnelser. Prefacing med ", ikke" tests til manglende registreringer. Her underforespørgslen matcher kunderne i begge tabeller . Kampe returnere resultater , hvilket ville udelukke de matchede Kunde s fra de vigtigste resultat sæt . Kun Kunde s uden O.CUSTOMERID match ville blive vist.
4
Alternativt , fastlægge manglende poster fra en sammensat visning af cusotmer og orden tabeller.
SELECT DISTINCT C.CUSTOMERIDFROM KUNDER C , ORDRER OWHERE C.CUSTOMERID = O.CUSTOMERID (+) og O.CUSTOMERID er null
p Hvis du har mistanke om Order tabellen kunne være mangler optegnelser , så prøv denne forespørgsel til at vise 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 ' s fra den venstre tabel, der ikke har nogen matchende O.CUSTOMERID ' s i højre side bordet.
< p> Hvis der er C.CUSTOMERID 's med nogen matchende O.CUSTOMERID ' s , vil de vise med null -værdier for ikke-eksisterende O.CUSTOMERID 's . Rækkerne med sådanne nuller repræsenterer de manglende ordreposter .
Hvis listen er for lang til visuel inspektion , den anden WHERE erklæring sikrer resultaterne er begrænset til C.CUSTOMERID 's med manglende ordrer.