Frånvaro av efterfrågade data tyder bara tillfället inte närvarande . En saknad rekord , dock är data som kan eller bör finnas , men är det inte. Till exempel , kunduppgifter och beställningar bor i tabeller Kunder och Order . En kund lista begärs , och ni , programmerare , antar varje kund har en order . Erbjuda sina kunder från köp bör ge rätt kundlistan , men hur? Listar kunder från kunder kan ge mer , vilket tyder på att vissa kunder har saknade order . Du måste avgöra vilka kunder som saknar order och sedan förstå om denna omständighet är avsiktligt eller en bugg . Instruktioner
1
Visa distinkta kunder i tabellen Kunder. Till exempel :
SELECT DISTINCT C.CUSTOMERIDFROM KUNDER C
2
Display distinkta kunder i tabellen Order . Till exempel :
SELECT DISTINCT O.CUSTOMERIDFROM BESTÄLLER O
3
Bestäm kunder med saknade order genom att kombinera steg 1 och 2 i en korrelerad underfråga
< p . > SELECT DISTINCT C.CUSTOMERIDFROM KUNDER CWHERE NOT EXISTS ( SELECT * FROM ORDER OWHERE O.CUSTOMERID = C.CUSTOMERID ) katalog
existerar är en Oracle -funktion som testar för förekomsten av returnerade delfråga register . Prefacing med "NOT" tester för avsaknad av register . Här matchar underfråga kunder i båda tabellerna . Matcher ger resultat , vilket skulle utesluta dem matchade Kundnr : s från den huvudsakliga resultatet. Endast customerId s utan O.CUSTOMERID match skulle visas .
4
Alternativt bestämmer saknade poster från en sammansatt bild av cusotmer och tabeller Order. SELECT DISTINCT C.CUSTOMERIDFROM KUNDER C
, bESTÄLLER OWHERE C.CUSTOMERID = O.CUSTOMERID ( + ) och O.CUSTOMERID är null
p Om du misstänker att Order tabellen kan saknas register , försök sedan denna fråga för att visa C.CUSTOMERID och O.CUSTOMERID sidan vid sida. Den ( + ) åberopar en vänster yttre koppling , som berättar Oracle att visa alla matchande data från WHERE uttalande plus eventuella C.CUSTOMERID är från den vänstra tabellen som inte har någon matchande O.CUSTOMERID 's på höger sida bordet .
Om det finns C.CUSTOMERID 's med ingen matchande O.CUSTOMERID ' s , kommer de att visa med null-värden för obefintlig O.CUSTOMERID 's . Raderna med sådana nollor representerar de saknade beställer rekord .
P Om listan är för lång för visuell inspektion , den andra där sats säkerställer resultaten är begränsade till C.CUSTOMERID 's med saknade order .
Addera