SQL Subquery Sumali sa Outer Query

Sql Subquery Sumali Sa Outer Query



Pagdating sa pagtatrabaho sa mga relational database, kailangan mong makabisado kung paano manipulahin at pagsamahin ang mga query upang maisagawa ang mga gawain na gusto mo. Iyon ang dahilan kung bakit ang bawat relational database engine ay nagpapatupad ng lasa ng wikang SQL sa pamamagitan ng pagtatangkang magbigay ng mga natatanging tampok, kahusayan, at kadalian ng paggamit para sa mga gumagamit nito.

Ang isa sa pinakamakapangyarihang feature ng SQL ay ang mga subquery. Ang mga subquery ay isang hanay ng mga nested na query sa loob ng mas malaki at mas kumplikadong query. Binibigyang-daan ka ng mga subquery na kunin ang data o magsagawa ng mas kumplikadong mga operasyon bilang isang entity.







Magagamit namin ang mga subquery para magsagawa ng pag-filter ng data, pag-uuri, pagsasama-sama sa maraming talahanayan, at higit pa.



Gayunpaman, ang isa pang feature na nakatago sa ilalim ng SQL subquery ay kilala bilang subquery joins. Ang mga ito ay katulad ng mga subquery; sa halip, ang mga ito ay mga pagsasama na nagbibigay-daan sa iyong gamitin ang mga subquery sa loob ng isang panlabas na query upang pagsamahin ang mga talahanayan.



Kung umiikot ang iyong ulo, huwag mag-alala dahil ang pagsali sa subquery ay maaaring maging mahirap na makabisado, lalo na sa simula. Gayunpaman, ang tutorial na ito ay sumusubok na hatiin ang subquery na sumali sa elementarya na mga hakbang nang hindi nag-iiwan ng masyadong maraming pagkakataon.





Tandaan na ipinapalagay namin na hindi ka bago sa SQL, SQL Joins, SQL Subquery, o iba pa. Gayunpaman, kung oo, tingnan ang aming mga tutorial sa mga paksa upang matuklasan ang higit pa.

Master ang SQL Outer Joins

Kung gusto mong maunawaan kung paano magtrabaho sa mga pagsali sa subquery, ang pag-aaral kung paano magtrabaho kasama ang mga panlabas na pagsali ay isang mahalagang kadahilanan.



Kung hindi ka pamilyar, binibigyang-daan ka ng isang panlabas na pagsali sa SQL na kunin ang lahat ng mga row mula sa isang table at ang mga tumutugmang row mula sa pangalawang table. Ito ay medyo mas kumplikado kaysa doon, kabilang ang kaliwang panlabas na pagsali, kanang panlabas na pagsali, buong panlabas na pagsali, atbp.

Sa isang SQL left outer join, ibinabalik ng query ang lahat ng row mula sa kaliwang table at ang katugmang row mula sa kanang table. Kasama sa query ang mga NULL na halaga sa mga resultang column kung walang mga tugmang row sa kanang talahanayan.

Sa kaso ng isang kanang panlabas na pagsali, ibinabalik ng query ang lahat ng mga hilera mula sa kanang talahanayan ngunit ang mga tumutugma lamang na mga hilera mula sa kaliwang talahanayan. Katulad nito, kasama sa query ang mga NULL na halaga kung walang tumutugmang mga hilera mula sa kaliwang talahanayan.

Sa wakas, mayroon na tayong buong panlabas na pagsali. Ibinabalik ng pagsali na ito ang lahat ng mga hilera mula sa kanan at kaliwang mga talahanayan at ang mga NULL na halaga para sa anumang hindi tumutugmang mga tala.

SQL Subquery Joins

Ngayon na naiintindihan na natin ang tungkol sa mga SQL subquery, pag-usapan natin ang tungkol sa mga subquery join. Ang mga pagsali sa subquery ay nagpapahintulot sa amin na gamitin ang mga subquery sa loob ng isang panlabas na query upang sumali sa mga talahanayan.

Kung ikaw ang tatanungin, yun ba? Oo, iyon lang ang ginagawa ng pagsali sa subquery.

Para mas maipakita ito, kunin ang sumusunod na halimbawa ng syntax na ipinapakita sa mga sumusunod:

PUMILI *
MULA sa talahanayan 1
LEFT OUTER JOIN (
PUMILI ng column1, column2
MULA sa talahanayan 2
) AS subquery
SA table1.column3 = subquery.column1;


Sa nakaraang syntax, pipiliin namin ang lahat ng mga column mula sa unang talahanayan gamit ang kaliwang panlabas na pagsali upang isama ito sa isang subquery. Ang tungkulin ng subquery ay kunin ang tinukoy na mga column mula sa Table 2. Pagkatapos ay isasama namin ito sa Table 1 sa kondisyon ng column 2 mula sa Table 1 at column 1 mula sa subquery.

Praktikal na Halimbawa:

Theoretically, ito ay tila hindi gaanong intuitive ngunit hayaan natin na kumuha ng isang real-world na senaryo sa pamamagitan ng pagkuha ng Sakila database.

Ipagpalagay na gusto naming kunin ang listahan ng lahat ng mga pelikula sa database at ang kani-kanilang mga wika. Ang mga wika ng mga pelikula ay naka-imbak sa talahanayan ng wika, at ang mga pangalan ng pelikula ay naka-imbak sa talahanayan ng pelikula.

Gayunpaman, ang talahanayan ng pelikula ay may foreign key na tinatawag na column na 'language_id' mula sa talahanayan ng wika. Samakatuwid, maaari tayong gumamit ng subquery na pagsali na may kaliwang panlabas na pagsali upang pagsamahin ang dalawang talahanayan nang magkasama gaya ng ipinakita sa sumusunod na query:

SELECT f.title, l.name AS wika
MULA sa pelikula f
LEFT OUTER JOIN (
PUMILI ng language_id, pangalan
MULA sa wika
) BILANG l
SA f.language_id = l.language_id;


Sa nakaraang halimbawang query, pipiliin namin ang column ng pamagat mula sa talahanayan ng pelikula at ang column ng pangalan mula sa talahanayan ng wika.

Pagkatapos ay gumamit kami ng subquery upang piliin ang language_id at ang column ng pangalan mula sa talahanayan ng mga wika. Ang susunod na hakbang ay isama ito sa talahanayan ng pelikula sa kondisyon na ang language_id mula sa talahanayan ng pelikula ay katumbas ng language_id mula sa talahanayan ng wika.

Upang matiyak na ang lahat ng mga pelikula ay kasama sa resulta, kailangan naming gamitin ang kaliwang panlabas na pagsasama na binubuo ng lahat ng mga resulta mula sa kaliwang talahanayan na, sa kasong ito, ay ang talahanayan ng pelikula.

Ang isang halimbawang output ay ang mga sumusunod:


Magagawa rin natin ang parehong sa isang kanang panlabas na pagsali. Ang syntax ay ang mga sumusunod:

PUMILI *
MULA sa talahanayan 1
RIGHT OUTER JOIN (
PUMILI ng column1, column2
MULA sa talahanayan 2
) AS subquery
SA table1.column3 = subquery.column1;


Pareho itong kumikilos ngunit kasama ang lahat ng mga tala sa tamang talahanayan kahit na walang mga katugmang talaan.

Mga Kapaki-pakinabang na Bagay na Dapat Malaman

Magandang maunawaan na bagama't ang mga pagsasama ng subquery ay lubhang kapaki-pakinabang at maaaring i-optimize ang iyong daloy ng trabaho, gamitin ang mga ito nang may pag-iingat.

Halimbawa, iwasang gamitin ang subquery joins na may malaking set ng data. Ito ay dahil maaari nilang ibalik ang malawak na mga tala na maaaring makaapekto sa pagganap ng database.

Isaalang-alang ang paggamit ng mga tool sa pagsusuri ng query bago isagawa ang anumang pagsali sa subquery.

Konklusyon

Ginalugad ng tutorial na ito ang mga batayan ng pagtatrabaho sa mga subquery at subquery na sumali sa SQL. Sa dulo ng tutorial na ito, nauunawaan mo na ngayon kung paano magtrabaho sa mga pagsali sa subquery, kung bakit maaaring kailanganin mong gamitin ang mga ito, at isang praktikal na halimbawa kung paano sila makakatulong sa iyong daloy ng trabaho.