Dator > hur man hittar försvunna poster med SQL

  • hur man hittar försvunna poster med SQL


  • Avsaknad av ifrågasatte data tyder enda för närvarande inte är närvarande. En saknad post är dock uppgifter som kan eller bör finnas , men är det inte. Till exempel , kunduppgifter och order bosatta i tabellerna Kunder och Order . En kund lista begärs , och ni, programmeraren , antar varje kund har en beställning . Ger kunderna beställningar bör ge rätt kund listan, men hur? Lista kunder från kunder kan ge mer , vilket tyder på vissa kunder har saknas beställningar . Du måste kontrollera vilka kunder som saknas beställningar och sedan förstår om detta förhållande är avsiktligt eller en bugg .
    1
    uppvisar olika kunder i tabellen Kunder . . Till exempel :

    SELECT DISTINCT C. Kundnr
    FRÅN KUNDER C
    2
    uppvisar olika kunder i tabellen Order . Till exempel :

    SELECT DISTINCT O. Kundnr
    från beställningar O
    3
    Bestäm kunderna saknas beställningar genom att kombinera steg 1 och 2 i ett . korrelerade underfråga .

    SELECT DISTINCT C. Kundnr
    FRÅN KUNDER C
    VAR INTE EXISTS
    ( SELECT *
    från beställningar O
    där o . CustomerID=C. Kundnr )

    finns är en Oracle -funktion som testar för existensen av returnerade delfråga poster . Vilken inledde med " INTE " tester för avsaknaden av poster . Här matchar underfrågan kunder i båda tabellerna. Matcher återvända resultat , vilket skulle utesluta dem som matchas Kundnr : s från den huvudsakliga resultatet . Bara CustomerID är utan O. Kundnr matchen skulle visas .
    4 .
    Alternativt avgöra saknas uppgifter från en sammansatt bild av CUSOTMER och ORDER tabeller .

    SELECT DISTINCT C. Kundnr
    FRÅN KUNDER C , order O
    VAR C. Kundnr=O. Kundnr (+ )
    och O. Kundnr är null

    Om du misstänker att beställa bord kan missa poster , då Prova denna fråga för att visa C. Kundnr och O. Kundnr sida vid sida . På (+ ) åberopar en vänster yttre koppling , som berättar Oracle för att visa alla matchande data från WHERE plus alla C. Kundnr är från vänster bord som inte har någon matchande O. Kundnr är på höger sida bordet .

    Om det finns C. Kundnr är med någon matchande O. Kundnr ' s , kommer de att visa med null -värden för den obefintliga O. Kundnr ' s. Raderna med sådana nulltecken företräda saknas beställa skivor .

    Om listan är för lång för visuell inspektion , den andra WHERE ser resultaten är begränsade till C. Kundnr är med saknas beställningar .

    tips och varningar


  • Frågan anses korrelerade eftersom underfrågan referenser C. KUND , som finns i en tabell som inte refereras till i underfrågan . Oracle kommer att behandla underfrågan en post i taget och försöker att matcha varje O. kunden till ett C. KUNDEN i rad returnerar en null eller inte null spela in beroende på matchresultat .
  • En okorrelerade underfråga har ingen referens till ett fält utanför dess referenser tabeller . Detta tvingar Oracle för att köra underfrågan och matcha hela resultatet till huvudfrågan , letar efter tändstickor till WHERE villkor .
  • misslyckas med att fånga saknas register kan påverka din slutrapport genom att inte lägga fram den fulla omfattningen av uppgifterna .

Previous:nothing Next:hur man lär sig Java 6





Relaterade artiklar


  • hur du hittar den dubbla poster i en tabell
  • hårdvara RAID server vs mjukvaru-RAID server
  • vad är meningen med öppna kretslopp ?
  • hur man gör en animerad sprite med Game Maker 7
  • hur du säkerhetskopierar med Visual Basic
  • hur man läser ett Word-dokument med Java
  • Hur konvertera datumformat i Java
  • hur man använder rullningslisten med listboxen i Visual Basic 6.0
  • roll underhåll av programvara
  • hur man läser textfiler med Visual Basic