Mikä on ero sisä- ja ulkoyhdistelmien välillä?

Sekä sisä- että ulkoyhdistelmiä käytetään kahden tai useamman taulukon tietojen yhdistämiseen; on kuitenkin joitain keskeisiä eroja! Lue tämä artikkeli selvittääksesi jokaisen komennon vahvuudet ja milloin niitä tulisi käyttää.

Jotta saat kaiken irti tästä ja muista oppitunneistasi, muista käyttää esimerkkejä!

Kaikki tämän oppiaiheen esimerkit perustuvat Microsoft SQL Server Management Studioon ja AdventureWorks2012-tietokantaan. Aloita näiden ilmaisten työkalujen käyttäminen Oppaani avulla Aloittaminen SQL Serverin käytöstä.

Mikä on ero sisäisten ja ulkoisten liitosten välillä?

Sisäiset ja ulkoiset liitokset ovat yhdistettyjä rivejä kahdesta tai useammasta lisää taulukoita yhdeksi tulokseksi liittämisehdon avulla. Liittymisehto määrittää, miten kunkin taulukon sarakkeet sovitetaan toisiinsa. Useimmissa tapauksissa tavoitteena on löytää yhtäläiset arvot taulukoiden välillä ja sisällyttää ne vastaavuudet.

Yleisin tapaus on, kun sovitat yhden taulukon vieraan avaimen toisen avaimeen. , kuten käytettäessä arvoa ja ID-arvoa.

Vaikka sekä sisä- että ulkoyhdistelmiin sisältyy rivejä molemmista taulukoista, kun otteluehto onnistuu, ne eroavat toisistaan siinä, miten ne käsittelevät väärää osumaehtoa. / p>

Sisäiset liittymät eivät sisällä rivejä, jotka eivät vastaa toisiaan; taas ulommat liitokset sisältävät ne.

Kaivetaan hieman syvemmälle kunkin mekaniikkaan.

Sisäisen liitoksen mekaniikka

Sisäistä liitosta käytetään tulosten palauttamiseen. yhdistämällä kahden tai useamman taulukon rivit.

Yksinkertaisimmassa tapauksessa, kun liittymisehtoa ei ole, sisäinen liitos yhdistää kaikki yhden taulukon rivit toisen taulukon riveihin. Jos ensimmäisessä taulukossa oli kolme riviä ja toisessa neljä riviä, lopullinen tulos sisältäisi kaksitoista (3 x 4 = 12)!

Liittymisehdon tarkoituksena on rajoittaa yhdistettyjä rivejä. Useimmissa tapauksissa rajoitamme rivejä saraketta vastaaviin.

Jos henkilöllä on useampi kuin yksi puhelinnumero, tehdään useampi kuin yksi haku. Tästä näet, että saatamme palauttaa enemmän rivejä kuin kullekin henkilölle.

Liittymispöydät

Toisaalta, jos henkilöllä ei ole puhelinnumeroa, PersonPhone-puhelimessa ei ole merkintää eikä ottelua ole tehty. Kyseistä henkilöä ei sisällytetä tuloksiin, koska vain henkilöt, joilla on vastaavuuksia, sisältyvät.

Kokeillaan esimerkkiä.

Sisäisen liittymisen esimerkki

Oletetaan henkilöstöpäällikkö haluaa luoda puhelinluettelon. He haluavat henkilön etunimen, sukunimen, arvonimen ja puhelinnumerot. Mitä kyselyä voit käyttää tämän luomiseen?

Tässä on temppu:

SELECT P.FirstName, P.LastName, P.Title, PH.PhoneNumberFROM Person.Person AS P INNER JOIN Person.PersonPhone AS PH ON P.BusinessEntityID = PH.BusinessEntityID AND PH.PhoneNumberTypeID = 3ORDER BY P.LastName

INNER JOIN määrittää, mitkä taulukot liittyä ja ottelun edellytys. Ehto PH.Phone NumberTyeID = 3 rajoittaa kyselyn työnumeroihin.

Jos suoritat yllä olevan, saat seuraavat tulokset:

Sisäiset liittymätulokset

Pidä mielessä, että sisempi liitos palauttaa vain rivin, jossa vastaavuusehto on totta. Tässä esimerkissä rivit, joissa BusinessEntityID ei täsmää, eivät sisälly. Tämä voi olla ongelma, jos henkilöllä ei ole puhelinnumeroa, koska kyseisiä työntekijöitä ei ole luettelossa.

Jos haluat sisällyttää nämä työntekijät, voit käyttää ulkoista liitosta.

Ulkoisen liitoksen mekaniikka

Ulkoista liitosta käytetään tulosten palauttamiseen yhdistämällä kahden tai useamman taulukon rivejä. Mutta toisin kuin sisäinen liitos, ulompi liitos palauttaa jokaisen rivin yhdestä määritetystä taulukosta, vaikka liittämisedellytys epäonnistuu.

Ota yllä oleva puhelinluetteloesimerkki. Jos henkilöstöpäällikkö haluaisi listata jokaisen työntekijän riippumatta siitä, onko heillä työpaikan puhelinnumero, ulkoisen liitoksen käyttäminen tekisi siitä niin.

SELECT P.FirstName, P.LastName, P.Title, PH.PhoneNumberFROM Person.Person AS P LEFT OUTER JOIN Person.PersonPhone AS PH ON P.BusinessEntityID = PH.BusinessEntityID AND PH.PhoneNumberTypeID = 3ORDER BY P.LastName

Voit Lue lisää tämän artikkelin vasemman ja oikeanpuoleisista liitoksista, sillä nyt vain ymmärrä, että kun käytetään VASEN OUTER JOIN -liitäntää, kaikki FROM-lausekkeen taulukon rivit sisällytetään tulokseen, vaikka vastaavaa ei löydy toinen taulukko.

Kun vastaavuutta ei löydy, NULL lisätään sarakkeeseen.

Näet tämän toiminnassa alla:

Ulkoiset liittymätulokset

Huomautus esimerkissä Catherine Abelin puhelinnumero on NULL. Tämä johtuu siitä, että Catherinen työnumeroa ei ole luettelossa eikä liittymistä löydetty.

Jos tämä olisi ollut sisäinen liittyminen, tätä riviä ei olisi sisällytetty tuloksiin.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *