Miten löytää kadonneita Records SQL

SQL tekniikoita ratkaista palapeliä puuttuu kirjaa. sininen palapeli tausta yksi pala jäi kuva Stasys Eidiejus päässä Fotolia.com

puuttuminen epäili tietoja ainoastaan ​​ehdottaa tällä hetkellä ole läsnä.Puuttuva levy, kuitenkin, on tietoja, jotka voisivat tai sen pitäisi olla läsnä, mutta ei ole.Esimerkiksi, asiakkaan tiedot ja tilausten asuvat taulukoissa Asiakkaat ja tilaukset.Asiakas luettelo haetaan, ja te, ohjelmoija, olettaa jokainen asiakas on tilauksen.Tarjoamalla asiakkaille tilaukset olisi annettava oikea asiakas luettelo, mutta eihän?Listing asiakkaita Asiakas voi tuottaa enemmän, mikä viittaa siihen, jotkut asiakkaat ovat kateissa tilauksia.Sinun täytyy määritellä, mikä asiakkaat puuttuvat tilauksia ja sitten ymmärtää, jos tämä seikka on suunnittelu tai vika.

Ohjeet

  1. Näytä eri asiakkaille asiakkaisiin taulukossa.Esimerkiksi:

    select distinct C.CUSTOMERID
    asiakkailta C

  2. Näytä eri asiakkaiden tilausten taulukossa.Esimerkiksi:

    select distinct O.CUSTOMERID
    tilausten O

  3. Selvitä asiakkailleen puuttuu

    tilaukset yhdistämällä vaiheet 1 ja 2 osaksi korreloidun alikysely.

    select distinct C.CUSTOMERID
    asiakkailta C
    MISSÄ EI EXISTS
    (SELECT *

    tilausten O

    WHERE O.CUSTOMERID = C.CUSTOMERID)

    EXISTS on Oracle funktio, joka testaa olemassaolon palasi alikysely kirjaa.Prefacing kanssa "EI" testit puuttuminen kirjaa.Täällä, alikyselyn vastaa asiakkaiden molemmissa taulukoissa.Ottelut palauta tuloksia, mikä jättää nämä täsmäsi AsiakasID n päässä tulosjoukon.Vain AsiakasID kanssa ei O.CUSTOMERID ottelu näkyisi.

  4. Vaihtoehtoisesti, määrätä puuttuu levyjä komposiitti näkymä cusotmer ja TILAA taulukoita.

    select distinct C.CUSTOMERID
    asiakkailta C tilaukset O
    WHERE C.CUSTOMERID = O.CUSTOMERID (+)

    ja O.CUSTOMERID on null

    Jos epäilet Tilaus Taulukko voisi puuttuu kirjaa, yritä tämä kyselyNäytä C.CUSTOMERID ja O.CUSTOMERID vierekkäin.(+) Vetoaa vasen ulompi liittyä, joka kertoo Oracle näyttää kaikki löydetyt tiedot WHERE selvitys lisättynä C.CUSTOMERID n päässä vasemmanpuoleista pöytä, joilla ei ole vastaavia O.CUSTOMERID n oikealla puolella pöydän.

    Jos on C.CUSTOMERID kanssa myyjien O.CUSTOMERID n, ne näyttää null-arvot olematon O.CUSTOMERID n.Rivit, joilla on tällainen nollia edustavat puuttuva tilauksen kirjaa.

    Jos lista on liian pitkä silmämääräinen tarkastus, toinen MISSÄ lausuman takaa tulokset rajoittuvat C.CUSTOMERID kanssa puuttuu tilauksia.

Vinkkejä & amp;Varoitukset

  • kysely pidetään vastaaviin koska alikysely viittauksia C.CUSTOMER, joka esiintyy taulukon ei viitattu alikysely.Oraakkeli käsittelee alikysely yksi levy kerrallaan, yrittää sovittaa kunkin O.CUSTOMER on C.CUSTOMER peräkkäin, paluu null tai ei nollatietue riippuen ottelun tulokseen.
  • korreloimattomia alikysely ei viitata kentän ulkopuolella viittauksia taulukot.Tämä pakottaa Oracle ajaa alikysely ja vastaavat koko tulosjoukon tärkein kyselyn, etsivät otteluiden WHERE ehdot.
  • jättäminen kiinni puuttuu kirjaa voivat vaikuttaa loppuraportin ei esitä koko laajuudessaan tietojen.

Resurssit

  • SQL-analogisesti puuttuvat tiedot
815
0
3
Ohjelmointikieltä