Sumali sa Tatlong Talahanayan sa SQL

Sumali Sa Tatlong Talahanayan Sa Sql



Sa mga relational database, ang gawain ng pagkuha ng data mula sa maramihang mga talahanayan ay napakakaraniwan. Depende sa target na resulta, ito ay nagsasangkot ng pagsasama ng maramihang mga talahanayan sa iisang unit at pagkuha ng resultang data.

Pagdating sa pagsali, karamihan sa atin ay pangunahing nagtatrabaho sa limitasyon ng dalawang talahanayan at iba pa. Gayunpaman, karaniwan na kailangang sumali sa tatlong talahanayan upang makakuha ng mas makabuluhang layout at insight ng data. Kunin halimbawa kung saan mo gustong kunin ang isang listahan ng mga pelikula, ang kanilang kaukulang imbentaryo ng pagrenta, at ang aktwal na mga detalye ng pagrenta. Ang bawat isa sa mga unit na ito tulad ng mga pelikula, imbentaryo, at mga detalye ng pagrenta ay nasa mga indibidwal na talahanayan.

Sa tutorial na ito, ituturo namin sa iyo ang iba't ibang mga pagsali at diskarte na magagamit mo upang sumali sa tatlong talahanayan sa SQL.







Mga kinakailangan:

Para sa mga layunin ng pagpapakita, gagamitin namin ang MySQL bersyon 80 at ang sample na database ng Sakila. Upang sumunod, maaari mong i-download at i-set up ang Sakila database sa iyong MySQL server. Huwag mag-atubiling gumamit ng anumang iba pang dataset na sa tingin mo ay naaangkop.



Mga Uri ng Pagsasama sa SQL

Bago tayo makarating sa aplikasyon ng mga pagsali, magsimula tayo sa pamamagitan ng pagtalakay sa iba't ibang uri ng mga pagsali na magagamit sa mga database ng SQL.



INNER JOIN

Ang unang uri ng pagsali ay isang INNER JOIN. Ang ganitong uri ng pagsali ay nagbabalik lamang ng mga row na naglalaman ng katugmang halaga sa parehong mga talahanayan. Ito ay isang napaka-karaniwang uri ng pagsali at ito ang pinakasimple kapag sumali sa dalawang talahanayan.





Ang syntax ay ang mga sumusunod:

PUMILI ng mga column

MULA sa talahanayan 1

INNER JOIN table2 NAKA-ON table1.column_name = table2.column_name;

INIWANG SUMALI

Sa kaso ng LEFT JOIN, ibinabalik nito ang lahat ng row mula sa kaliwang table at ang tugmang row mula sa kanang table. Kung walang tumutugmang mga halaga mula sa tamang talahanayan, ang pagsasama ay nagdaragdag ng mga NULL na halaga sa kanilang lugar.



Ang syntax ay ang mga sumusunod:

PUMILI ng mga column

MULA sa talahanayan 1

LEFT JOIN table2 NAKA-ON table1.column_name = table2.column_name;

RIGHT JOIN

Tulad ng maaari mong hulaan, ang RIGHT JOIN ay ang kabaligtaran ng LEFT JOIN. Ibinabalik ng ganitong uri ng pagsasama ang lahat ng mga row mula sa kanang talahanayan at ang mga tumutugmang row lang mula sa kaliwang talahanayan. Kung walang magkatugmang mga hilera sa kaliwang talahanayan, ang pagsali ay nagdaragdag ng mga NULL na halaga dito.

Ang sumusunod ay ang syntax ng isang RIGHT JOIN:

PUMILI ng mga column

MULA sa talahanayan 1

RIGHT JOIN table2 NAKA-ON table1.column_name = table2.column_name;

FULL OUTER JOIN

Ang susunod na uri ng pagsali na makakatagpo mo sa mga database ng SQL ay isang FULL OUTER JOIN. Ibinabalik ng ganitong uri ng pagsali ang lahat ng row kapag may tugma sa kanan o kaliwang talahanayan. Kung walang katumbas na halaga sa alinman sa dalawa, ibinabalik nito ang NULL para sa mga column mula sa talahanayan nang walang tugma.

Ang sumusunod ay nagpapakita ng syntax ng isang BUONG OUTER JOIN:

PUMILI ng mga column

MULA sa talahanayan 1

FULL OUTER JOIN table2 NAKA-ON table1.column_name = table2.column_name;

Mabuting tandaan na hindi lahat ng mga database engine ay sumusuporta sa FULL OUTER JOINS. Upang makamit ito, maaaring kailanganin mong magtrabaho kasama ang iba pang mga uri ng JOINS o subquery.

Mga halimbawa:

Tuklasin natin ang ilang mga halimbawa kung paano natin magagamit ang mga ganitong uri ng pagsasama para makasali sa tatlong talahanayan sa SQL.

Halimbawa 1: Gamit ang INNER JOIN

Magsisimula tayo sa isang INNER JOIN. Ipagpalagay na gusto naming kumuha ng listahan ng mga pelikula, imbentaryo ng pagrenta, at mga kaukulang detalye ng pagrenta.

Maaari kaming gumamit ng maraming INNER JOINS sa mga nauugnay na talahanayan tulad ng ipinapakita sa sumusunod na halimbawa:

PUMILI

pamagat ng pelikula,

inventory.inventory_id,

rental.rental_date

MULA SA

pelikula

INNER JOIN imbentaryo NAKA-ON

film.film_id = imbentaryo.film_id

INNER JOIN rental NAKA-ON

inventory.inventory_id = rental.inventory_id;

Sa ibinigay na halimbawang query, magsisimula kami sa pamamagitan ng pagsali sa mga talahanayan ng pelikula at imbentaryo batay sa column na 'film_id'. Pagkatapos ay kukunin namin ang resultang hanay at isasama ito sa talahanayan ng rental batay sa column na 'inventory_id'.

Tinitiyak nito na sasali kami sa tatlong table na may pangunahing INNER JOIN. Ang resultang set ay ang mga sumusunod:

Halimbawa 2: Gamit ang INNER JOIN at LEFT JOIN

Sabihin natin na gusto na natin ngayon ang listahan ng mga pelikula, ang listahan ng mga imbentaryo ng pagrenta (kung mayroon man), at ang nauugnay na mga detalye ng pagrenta.

Nais din naming tiyakin na kahit na ang isang pelikula ay walang imbentaryo ng pagpapaupa, isasama pa rin namin ito sa resulta. Dito pumapasok ang INNER JOIN at LEFT JOIN.

Isaalang-alang ang sumusunod na halimbawa:

PUMILI

pamagat ng pelikula,

inventory.inventory_id,

rental.rental_date

MULA SA

pelikula

INNER JOIN imbentaryo NAKA-ON

film.film_id = imbentaryo.film_id

LEFT JOIN rental NAKA-ON

inventory.inventory_id = rental.inventory_id;

Sa halimbawang ito, gumagamit kami ng INNER JOIN para sumali sa talahanayan ng pelikula at imbentaryo para matiyak na makukuha namin ang mga pamagat na may available na imbentaryo. Pagkatapos ay ginagamit namin ang LEFT JOIN para sumali sa rental table para kunin ang mga detalye ng rental kung available at NULL para sa anumang pamagat na walang history ng rental.

Ang resultang set ay ang mga sumusunod:

Konklusyon

Sa tutorial na ito, natutunan namin ang tungkol sa iba't ibang uri ng JOINS sa SQL, kung paano gumagana ang mga ito, at kung paano namin magagamit ang mga ito upang pagsamahin ang tatlong talahanayan.