SQL Outer Join

Sql Outer Join



Hindi sinasabi na ang pagsali ay isa sa mga pinaka-makikilalang tampok ng mga relational database. Ang pagsali ay nagbibigay-daan sa amin na pagsamahin ang data mula sa isa o higit pang mga talahanayan batay sa isang nauugnay na kundisyon upang lumikha ng magkakaugnay na operasyon ng data.

Mayroong iba't ibang uri ng pagsali sa SQL, bawat isa ay may natatanging paraan kung paano nito pinangangasiwaan ang data mula sa mga kalahok na talahanayan o ang resultang set. Ang isa sa pinakakaraniwang uri ng pagsali sa SQL ay ang OUTER JOIN.







Kinukuha ng OUTER JOIN sa SQL ang lahat ng tumutugmang row mula sa mga kasangkot na talahanayan pati na rin ang hindi magkatugmang mga row mula sa isa o parehong talahanayan. Ito ay madaling gamitin kapag nakikipag-usap ka sa mga talahanayan na naglalaman ng mga NULL na halaga o nawawalang mga hanay.



Tuklasin pa natin kung ano ang ginagawa ng mga pagsali na ito, kung paano gumagana ang mga ito, at kung paano natin magagamit ang mga ito sa isang database ng SQL.



Mga kinakailangan:

Para sa tutorial na ito, gagana kami sa MySQL 8.0 at gagamitin ang sample na database ng Sakila. Gayunpaman, huwag mag-atubiling gumamit ng anumang iba pang dataset na sa tingin mo ay naaangkop.





Mga Uri ng Outer Joints

May tatlong pangunahing uri ng OUTER JOINS sa SQL. Kabilang sa mga ganitong uri ng OUTER JOINS ang:

  1. Kaliwa OUTER JOINS

  2. Sa kaso ng LEFT OUTER JOINS, kinukuha ng pagsali ang lahat ng mga row mula sa kaliwang talahanayan at ang mga tumutugmang row lang mula sa kanang talahanayan. Kung walang tumutugmang mga hilera mula sa kanang talahanayan, ibinabalik ng pagsali ang mga NULL na halaga para sa mga column sa kanang talahanayan.



  3. Kanan OUTER JOINS

  4. Ito ay katulad ng isang RIGHT OUTER JOIN. Gayunpaman, kinukuha nito ang lahat ng mga hilera mula sa kanang talahanayan ngunit ang mga tumutugmang hanay lamang mula sa kaliwang talahanayan. Kung walang tumutugmang mga hilera mula sa kaliwang talahanayan, kasama sa pagsali ang mga NULL na halaga para sa mga column sa kaliwang talahanayan.

  5. FULL OUTER JOIN

  6. Panghuli, mayroon kaming BUONG OUTER JOINS. Pinagsasama ng ganitong uri ng pagsali ang KANAN at KALIWA na panlabas na pagsali. Bilang resulta, kinukuha ng pagsali ang lahat ng mga hilera kapag may tugma sa alinman sa kaliwa o kanang talahanayan. Kung walang tugma, ibabalik ng pagsali ang NULL na mga halaga para sa mga column mula sa talahanayan na walang tugma.

Syntax ng SQL OUTER JOIN

Ang sumusunod ay nagpapahayag ng syntax ng isang SQL OUTER JOIN. Gayunpaman, magandang tandaan na ang syntax ay maaaring bahagyang mag-iba depende sa target na database engine.

Ang sumusunod ay isang pangkalahatang istraktura:

PUMILI ng mga column
MULA sa talahanayan 1
[KALIWA | TAMA | BUONG] OUTER JOIN table2
SA table1.column_name = table2.column_name;

Ang syntax ng isang OUTER JOIN sa SQL ay medyo maliwanag.

Mga halimbawa:

Tingnan natin ang ilang sample na paggamit kung paano natin mailalapat ang iba't ibang uri ng OUTER JOINS sa SQL.

Tulad ng aming nabanggit, gagamitin namin ang Sakila sample database para sa pagpapakita. Sa kasong ito, ginagamit namin ang mga talahanayan ng 'customer' at 'pagbabayad'.

Halimbawa 1: LEFT OUTER JOIN

Magsimula tayo sa isang OUTER JOIN. Ipagpalagay na gusto naming kunin ang lahat ng impormasyon ng customer kasama ang kanilang impormasyon sa pagbabayad, kung available.

Ginagawa nitong naaangkop ang LEFT OUTER JOIN dahil gusto namin ang lahat ng impormasyon ng customer (sa kaliwa) at impormasyon sa pagbabayad kung magagamit (kanan).

Kung ang customer ay hindi nakagawa ng anumang pagbabayad, ang pagsali ay magpapakita ng mga NULL na halaga para sa mga column na nauugnay sa pagbabayad.

Ang isang halimbawa ay ang sumusunod:

PUMILI
c.customer_id,
c.first_name,
c.apelyido,
p.halaga,
p.petsa ng pagbabayad
MULA SA
customer c
LEFT OUTER JOIN pagbabayad p
NAKA-ON
c.customer_id = p.customer_id;

Sa ibinigay na query, isinama namin ang mga column na 'customer_id', 'first_name', at 'last_name' mula sa talahanayan ng 'customer.' Kasama rin namin ang halaga at 'petsa ng pagbabayad' mula sa talahanayan ng 'pagbabayad'.

Pagkatapos ay nagsasagawa kami ng LEFT OUTER JOIN sa pagitan ng mga talahanayan ng 'customer' at 'pagbabayad' batay sa 'customer_id.'

Ito ang lahat ng mga customer (nagbayad man o hindi) kasama ang kanilang mga detalye sa pagbabayad (kung mayroon man).

Ang isang halimbawang output ay ang mga sumusunod:

Halimbawa 2: RIGHT OUTER JOIN

Ngayon, lumipat tayo sa RIGHT OUTER JOIN. Ipagpalagay na nais naming isama ang lahat ng impormasyon sa pagbabayad at ang nauugnay na customer sa kasong ito, kung mayroon man.

Sa kasong ito, kung ang isang pagbabayad ay ginawa ng isang customer, ang pagsali ay magpapakita ng mga detalye ng customer na iyon. Kung mayroong pagbabayad na walang nauugnay na customer, ipapakita nito ang mga NULL na halaga para sa mga column na nauugnay sa customer.

PUMILI
c.customer_id,
c.first_name,
c.apelyido,
p.halaga,
p.petsa ng pagbabayad
MULA SA
customer c
RIGHT OUTER JOIN pagbabayad p
NAKA-ON
c.customer_id = p.customer_id;

Ang resultang set ay ang mga sumusunod:

Halimbawa 3: BUONG OUTER JOIN

Ang FULL OUTER JOIN, sa kabilang banda, ay kinukuha ang lahat ng impormasyon ng customer at pagbabayad. Kabilang dito ang lahat ng customer at lahat ng pagbabayad at ipinapakita ang mga NULL na halaga kung saan walang tugma sa pagitan ng mga talahanayan.

PUMILI
c.customer_id,
c.first_name,
c.apelyido,
p.halaga,
p.petsa ng pagbabayad
MULA SA
customer c
FULL OUTER JOIN bayad p
NAKA-ON
c.customer_id = p.customer_id;

Magandang tandaan na ang MySQL ay hindi katutubong sumusuporta sa isang FULL OUTER JOIN. Kailangan mong gumawa ng jiujitsu magic gamit ang LEFT JOIN, UNION, at RIGHT JOIN. Medyo nakakainis, maaari naming idagdag.

Konklusyon

Sa tutorial na ito, natutunan namin ang lahat tungkol sa OUTER JOINS. Natutunan namin kung ano ang OUTER JOIN sa SQL, ang mga uri ng OUTER JOIN, at ang mga halimbawa kung paano gamitin ang mga ganitong uri ng OUTER JOIN.