Liity kolmeen taulukkoon SQL:ssä

Liity Kolmeen Taulukkoon Sql Ssa



Relaatiotietokannoissa tietojen hakeminen useista taulukoista on erittäin yleistä. Tavoitetuloksesta riippuen tähän liittyy useiden taulukoiden yhdistäminen yhdeksi yksiköksi ja tuloksena olevien tietojen hakeminen.

Liittymisen suhteen useimmat meistä työskentelevät pääasiassa kahden pöydän rajoituksella ja niin edelleen. On kuitenkin tavallista, että kolme taulukkoa on yhdistettävä saadakseen merkityksellisemmän tietojen asettelun ja käsityksen. Otetaan esimerkiksi paikka, josta haluat hakea luettelon elokuvista, niitä vastaavasta vuokravarastosta ja todellisista vuokraustiedoista. Jokainen näistä yksiköistä, kuten elokuvat, inventaario ja vuokratiedot, ovat yksittäisissä taulukoissa.

Tässä opetusohjelmassa opastamme sinut eri liitosten ja tekniikoiden läpi, joilla voit yhdistää kolme taulukkoa SQL:ssä.







Vaatimukset:

Esittelytarkoituksiin käytämme MySQL-versiota 80 ja Sakilan mallitietokantaa. Jatkaksesi, voit ladata ja määrittää Sakila-tietokannan MySQL-palvelimellesi. Voit vapaasti käyttää mitä tahansa muuta sopivaksi katsomaasi tietojoukkoa.



Liitostyypit SQL:ssä

Ennen kuin siirrymme liitosten soveltamiseen, aloitetaan keskustelemalla erityyppisistä liitostyypeistä, jotka ovat saatavilla SQL-tietokannassa.



SISÄLIITTYMINEN

Ensimmäinen liitostyyppi on INNER JOIN. Tämäntyyppinen liitos palauttaa vain ne rivit, jotka sisältävät vastaavan arvon molemmissa taulukoissa. Se on hyvin yleinen liitostyyppi, ja se on yksinkertaisin liitettäessä kaksi pöytää.





Syntaksi on seuraava:

VALITSE sarakkeet

taulukosta 1

INNER JOIN taulukko2 PÄÄLLÄ taulukko1.sarakkeen_nimi = taulukko2.sarakkeen_nimi;

LEFT LIITY

LEFT JOIN:n tapauksessa se palauttaa kaikki rivit vasemmasta taulukosta ja vastaavat rivit oikeanpuoleisesta taulukosta. Jos oikeasta taulukosta ei löydy vastaavia arvoja, liitos lisää NULL-arvot niiden tilalle.



Syntaksi on seuraava:

VALITSE sarakkeet

taulukosta 1

LEFT JOIN taulukko2 PÄÄLLÄ taulukko1.sarakkeen_nimi = taulukko2.sarakkeen_nimi;

OIKEA LIITTYMINEN

Kuten voit arvata, RIGHT JOIN on vasen JOIN vastakohta. Tämäntyyppiset liitokset palauttavat kaikki rivit oikeanpuoleisesta taulukosta ja vain vastaavat rivit vasemmasta taulukosta. Jos vasemmassa taulukossa ei ole vastaavia rivejä, liitos lisää siihen NULL-arvot.

Seuraava on RIGHT JOINin syntaksi:

VALITSE sarakkeet

taulukosta 1

OIKEA LIITTYMINEN -taulukko2 PÄÄLLÄ taulukko1.sarakkeen_nimi = taulukko2.sarakkeen_nimi;

TÄYDELLINEN ULKOLIITTYMINEN

Seuraava liitostyyppi, jonka kohtaat SQL-tietokannassa, on FULL OUTTER JOIN. Tämän tyyppinen liitos palauttaa kaikki rivit, kun oikealla tai vasemmalla olevassa taulukossa on osuma. Jos kummassakaan ei ole vastaavaa arvoa, se palauttaa NULL-arvon taulukon sarakkeille ilman vastaavuutta.

Seuraavassa esitetään FULL OUTER JOINin syntaksi:

VALITSE sarakkeet

taulukosta 1

FULL OUTTER JOIN -taulukko2 PÄÄLLÄ taulukko1.sarakkeen_nimi = taulukko2.sarakkeen_nimi;

On hyvä pitää mielessä, että kaikki tietokantakoneet eivät tue FULL OUTTER JOINS -toimintoa. Tämän saavuttamiseksi saatat joutua työskentelemään muun tyyppisten JOINS- tai alikyselyiden kanssa.

Esimerkkejä:

Tarkastellaanpa joitain esimerkkejä siitä, kuinka voimme käyttää tämäntyyppisiä liitoksia kolmen SQL:n taulukon yhdistämiseen.

Esimerkki 1: INNER JOINin käyttäminen

Aloitamme SISÄLIITTYMISESTÄ. Oletetaan, että haluamme hakea luettelon elokuvista, vuokravaraston ja vastaavat vuokratiedot.

Voimme käyttää useita SISÄLIITTYMISTÄ liitetyissä taulukoissa seuraavan esimerkin mukaisesti:

VALITSE

film.title,

inventory.inventory_id,

vuokra.vuokra_päivämäärä

FROM

elokuva

INNER JOIN -varasto PÄÄLLÄ

film.film_id = inventory.film_id

INNER JOIN vuokra PÄÄLLÄ

inventaario.varastotunnus = vuokra.varastotunnus;

Annetussa esimerkkikyselyssä aloitamme yhdistämällä elokuva- ja varastotaulukot 'film_id'-sarakkeen perusteella. Otamme sitten tuloksena olevan joukon ja yhdistämme sen vuokrataulukkoon 'inventory_id' -sarakkeen perusteella.

Tämä varmistaa sen, että yhdistämme kolme pöytää perus-INNER JOIN -toiminnolla. Tuloksena oleva sarja on seuraava:

Esimerkki 2: INNER JOIN ja LEFT JOIN käyttäminen

Oletetaan, että haluamme nyt luettelon elokuvista, luettelon vuokravarastoista (jos sellaisia ​​on) ja niihin liittyvät vuokratiedot.

Haluamme myös varmistaa, että vaikka elokuvalla ei olisi vuokravarastoa, sisällytämme sen silti tulokseen. Tässä kohtaa INNER JOIN ja LEFT JOIN tulevat peliin.

Harkitse seuraavaa esimerkkiä:

VALITSE

film.title,

inventory.inventory_id,

vuokra.vuokra_päivämäärä

FROM

elokuva

INNER JOIN -varasto PÄÄLLÄ

film.film_id = inventory.film_id

LEFT JOIN vuokra PÄÄLLÄ

inventaario.varastotunnus = vuokra.varastotunnus;

Tässä esimerkissä käytämme INNER JOIN -toimintoa liittääksemme elokuva- ja inventaariotaulukkoon varmistaaksemme, että saamme otsikot käytettävissä olevan inventaarion kanssa. Käytämme sitten LEFT JOIN -painiketta liittyäksemme vuokrataulukkoon hakeaksemme vuokratiedot, jos ne ovat saatavilla, ja NULL-komentoa kaikille nimikkeille, joilla ei ole vuokrahistoriaa.

Tuloksena oleva sarja on seuraava:

Johtopäätös

Tässä opetusohjelmassa opimme SQL:n erilaisista JOINS-tyypeistä, niiden toiminnasta ja siitä, kuinka voimme käyttää niitä kolmen taulukon yhdistämiseen.