Fravær av spørres data antyder bare for tiden ikke er til stede . En manglende registrering , er imidlertid data som kan eller bør være tilstede, men er ikke . For eksempel , kundeopplysninger og bestillinger bor i tabeller kunder og ordrer . En kundelisten er forespurt, og du , programmerer , antar hver kunde har en ordre . Tilby kundene fra bestillinger bør gi riktig kundelisten , men gjør det vel? Oppføring kunder fra kunder kan gi mer , noe som tyder på noen kunder har mangler bestillinger. Du må finne ut hvilke kunder som mangler ordrer og deretter forstå hvis dette forholdet er av design eller en bug . Instruksjoner
en
vise tydelige kunder i KUNDER tabellen . For eksempel : en
SELECT DISTINCT C.CUSTOMERIDFROM KUNDER C
2
vise tydelige kunder i tabellen Ordrer . For eksempel : en
SELECT DISTINCT O.CUSTOMERIDFROM ORDRE O
3
Bestem kunder med manglende ordre ved å kombinere trinn 1 og 2 i en korrelert delspørring
< p . > SELECT DISTINCT C.CUSTOMERIDFROM KUNDER CWHERE IKKE eksisterer ( SELECT * FROM ORDRE owhere O.CUSTOMERID = C.CUSTOMERID )
eksisterer er en Oracle -funksjon som tester for eksistensen av returnerte delspørring poster. Prefacing med ", ikke" tester for fravær av poster. Her matcher subquery kunder i begge tabellene . Kamper returnere resultater , noe som ville ekskludere de matchet KundeID er fra det viktigste resultatet sett . Bare Kunde -tallet med ingen O.CUSTOMERID kamp ville bli vist .
4
Alternativt bestemme manglende poster fra en sammensatt syn på cusotmer og bestille tabeller .
SELECT DISTINCT C.CUSTOMERIDFROM KUNDER C , ORDRE owhere C.CUSTOMERID = O.CUSTOMERID ( + ) og O.CUSTOMERID er null
p Hvis du mistenker Bestill bord kan være mangler poster, så prøv denne spørringen å vise C.CUSTOMERID og O.CUSTOMERID side ved side. Med (+ ) påkaller en venstre ytre sammenføyning , som forteller Oracle å vise alle samsvarende data fra der setning pluss noen C.CUSTOMERID er fra venstre tabell som ikke har noen matchende O.CUSTOMERID ' s på høyre side tabellen .
< p> Hvis det er C.CUSTOMERID ' s uten matchende O.CUSTOMERID ' s , vil de vise med nullverdier for den ikke-eksisterende O.CUSTOMERID ' s . Radene som har slike nuller representerer de manglende orden poster.
P Hvis listen er for lang for visuell inspeksjon , den andre der setning sikrer at resultatene er begrenset til C.CUSTOMERID ' s med manglende bestillinger.