Ühendage SQL-is kolm tabelit

Uhendage Sql Is Kolm Tabelit



Relatsiooniandmebaasides on andmete hankimine mitmest tabelist äärmiselt tavaline. Olenevalt sihttulemusest hõlmab see mitme tabeli ühendamist üheks üksuseks ja saadud andmete toomist.

Mis puutub liitumisse, siis enamik meist töötab peamiselt kahe laua ja muu sellise piiranguga. Siiski on tavaline, et andmete sisulisema paigutuse ja ülevaate saamiseks tuleb kolm tabelit ühendada. Võtke näiteks koht, kust soovite hankida filmide loendi, neile vastavad laenutusvarud ja tegelikud laenutusandmed. Kõik need üksused, nagu filmid, inventar ja laenutamise üksikasjad, on eraldi tabelites.

Selles õpetuses tutvustame teile erinevaid liitumisi ja tehnikaid, mida saate kasutada kolme tabeli ühendamiseks SQL-is.







Nõuded:

Demonstreerimiseks kasutame MySQL versiooni 80 ja Sakila näidisandmebaasi. Jätkamiseks saate Sakila andmebaasi alla laadida ja oma MySQL-serveris seadistada. Kasutage julgelt mis tahes muud andmestikku, mida peate kohaldatavaks.



Ühenduste tüübid SQL-is

Enne ühenduste rakenduse juurde asumist alustame SQL-andmebaasides saadaolevate eri tüüpi ühenduste arutamist.



SISEMINE LIITUMINE

Esimene liitumistüüp on SISEMINE. Seda tüüpi liitmine tagastab ainult need read, mis sisaldavad mõlemas tabelis vastavat väärtust. See on väga levinud liitmistüüp ja on kahe tabeli ühendamisel kõige lihtsam.





Süntaks on järgmine:

VALI veerud

tabelist1

SISEMINE JOIN tabel2 PEAL tabel1.veeru_nimi = tabel2.veeru_nimi;

VASAKUID LIITUMINE

LEFT JOIN puhul tagastab see kõik read vasakpoolsest tabelist ja sobitatud read paremast tabelist. Kui õigest tabelist pole sobivaid väärtusi, lisab liit nende asemele NULL väärtused.



Süntaks on järgmine:

VALI veerud

tabelist1

LEFT JOIN tabel2 PEAL tabel1.veeru_nimi = tabel2.veeru_nimi;

ÕIGE LIITUMINE

Nagu võite arvata, on RIGHT JOIN vastupidine LEFT JOIN. Seda tüüpi liitmised tagastavad kõik paremast tabelist olevad read ja ainult vasakpoolsest tabelist vastavad read. Kui vasakpoolses tabelis pole sobivaid ridu, lisab liit sellele NULL väärtused.

Järgmine on RIGHT JOIN süntaks:

VALI veerud

tabelist1

PAREMALE LIITUMINE tabel2 PEAL tabel1.veeru_nimi = tabel2.veeru_nimi;

TÄIELIK VÄLILINE LIITUMINE

Järgmine liitumistüüp, millega SQL-andmebaasides kokku puutute, on TÄIELIK VÄLILINE LIITUMINE. Seda tüüpi liitmine tagastab kõik read, kui vasak- või parempoolses tabelis on vaste. Kui kummalgi neist pole sobivat väärtust, tagastab see ilma vasteta tabeli veergude jaoks NULL-i.

Järgmine näitab FULL OUTER JOIN süntaksit:

VALI veerud

tabelist1

TÄIELIK VÄLILINE LIITUMINE tabel2 PEAL tabel1.veeru_nimi = tabel2.veeru_nimi;

Hea on meeles pidada, et mitte kõik andmebaasimootorid ei toeta TÄIELIKUID VÄLISI LIITUMIST. Selle saavutamiseks peate võib-olla töötama teist tüüpi JOINS-i või alampäringutega.

Näited:

Uurime mõnda näidet selle kohta, kuidas saame seda tüüpi liiteid kasutada kolme tabeli ühendamiseks SQL-is.

Näide 1: INNER JOIN kasutamine

Alustame SISEMISE LIITUMISEGA. Oletame, et tahame hankida filmide loendi, laenutatava inventari ja vastavad laenutuse üksikasjad.

Seotud tabelites saame kasutada mitut SISEMIST, nagu on näidatud järgmises näites:

VALI

film.title,

inventory.inventory_id,

rent.rental_date

FROM

film

INNER JOIN inventar PEAL

film.filmi_id = inventar.filmi_id

INNER JOIN rent PEAL

inventar.varu_id = rent.varu_id;

Antud näidispäringus alustame filmi ja laoseisu tabelite ühendamisest veeru “film_id” alusel. Seejärel võtame saadud komplekti ja ühendame selle veeru “inventory_id” alusel renditabeliga.

See tagab, et ühendame kolm tabelit põhilise SISEMISE LIITUMISE abil. Saadud komplekt on järgmine:

Näide 2: INNER JOIN ja LEFT JOIN kasutamine

Oletame, et tahame nüüd filmide loendit, laenutusvarude loendit (kui see on olemas) ja seotud laenutuse üksikasju.

Samuti tahame veenduda, et isegi kui filmil pole laenutatavat inventari, kaasame selle ikkagi tulemusesse. Siin tulevad mängu SISEMINE JOIN ja LEFT JOIN.

Kaaluge järgmist näidet:

VALI

film.title,

inventory.inventory_id,

rent.rental_date

FROM

film

INNER JOIN inventar PEAL

film.filmi_id = inventar.filmi_id

LEFT JOIN laenutus PEAL

inventar.varu_id = rent.varu_id;

Selles näites kasutame filmi ja inventari tabeli ühendamiseks funktsiooni INNER JOIN, et tagada pealkirjade saamine saadaoleva varuga. Seejärel kasutame laenutabeliga liitumiseks nuppu LEFT JOIN, et hankida laenutamise üksikasjad, kui need on saadaval, ja NULL-i kõigi pealkirjade puhul, millel pole laenutusajalugu.

Saadud komplekt on järgmine:

Järeldus

Selles õpetuses õppisime tundma SQL-i eri tüüpi JOINS-e, kuidas need töötavad ja kuidas saame neid kasutada kolme tabeli kombineerimiseks.