Mga kinakailangan para sa hitsura ng JOIN operator

Habang lumalaki ang dami ng data sa mga talahanayan, madalas na lumilitaw ang mga duplicate na halaga sa kanila. Halimbawa, ang talahanayan ng produkto ay may mga pangalan ng tatak. na kung minsan ay paulit-ulit. Magiging kapaki-pakinabang na magkaroon ng isang hiwalay na talahanayan ng tatak para sa kanila, na maglalaman, halimbawa, ng naturang data:

  • id - brand id;
  • pangalan – pangalan ng tatak;
  • company_owner - ang pangalan ng may-ari ng kumpanya ng tatak;
  • company_contacts - mga contact ng kumpanya ng may-ari ng brand.

Pagkatapos ay gusto naming lumikha ng isang talahanayan ng mga address kung saan maaari naming ilagay ang lahat ng mga address:

  • id – id-address;
  • bansa;
  • rehiyon;
  • lungsod;
  • kalye;
  • bahay;
  • zip.

Bukod dito, sa talahanayang ito posible na mag-imbak ng mga address ng hindi lamang mga kumpanyang nagmamay-ari ng tatak, kundi pati na rin ang mga address ng mga customer at empleyado. At ang diskarte na ito ay isang resulta lamang ng paglaki sa dami ng data (ang bilang ng mga hilera sa mga talahanayan). Ginagawa nitong mas madaling manipulahin ang data sa mga talahanayan at mapanatili ang kanilang integridad.

Kapag mayroon kang 5 empleyado, maaari mo lamang ipasok ang kanilang trabaho sa hanay ng trabaho . Kung mayroon kang 5 libong empleyado sa iyong kumpanya, kailangan mo ng isang talahanayan na may listahan ng mga x na propesyon at ang kanilang mga responsibilidad.

Sa wikang Java, sa pamamagitan ng paraan, mayroong isang bagay na katulad. Kung mayroon kang maraming code sa isang pamamaraan, kung gayon mayroong pagnanais na hatiin ito sa ilang mga pamamaraan. Kung mayroong maraming mga pamamaraan sa isang klase, gusto kong hatiin ito sa ilang mga klase.

Iyon ang dahilan kung bakit ang malalaking database ay may libu-libong mga talahanayan. At halos lahat ng mga query ay isinasagawa sa ilang mga talahanayan nang sabay-sabay. At ang produkto ng Cartesian ng mga hilera ng tatlong talahanayan sa bawat isa ay may isang libong mga talaan ay isa nang bilyong mga hilera.

Ngunit ang pag-filter lamang ng isang bilyong row gamit ang WHERE ay maaaring tumagal ng ilang oras. Samakatuwid, ang mga tagalikha ng wikang SQL ay nag-alok ng kanilang solusyon - ang JOIN operator.

Panimula sa JOIN operator

Ang JOIN operator ay ginagamit upang tahasang sabihin sa SQL server na hindi namin kailangan ng isang Cartesian na produkto ng lahat ng mga row ng mga talahanayan para sa lahat, ngunit isang matalinong pagdikit ng mga hilera ng iba't ibang mga talahanayan na tumutukoy sa isa't isa gamit ang isang ID (o sa ibang paraan) . Ang server ay may isang hiwalay na algorithm para sa pagproseso ng mga pagsali sa talahanayan gamit ang JOIN operator, na nagbibigay-daan sa mga naturang operasyon na maisagawa nang mas mabilis. Ang pangkalahatang anyo ng JOIN operator ay ang mga sumusunod:

table 1 JOIN table 2 ON condition

Sinasabi dito na kailangan mong pagsamahin ang mga table table1 at table2 sa isang table, at gamitin ang kundisyon bilang join criterion .

Kunin natin ang ating lumang halimbawa:

SELECT * FROM employee, task WHERE emploee.id = task.emploee_id

At muling isulat ito gamit ang JOIN operator:

SELECT * FROM employee JOIN task ON emploee.id = task.emploee_id

Ang parehong mga query ay magbibigay ng parehong resulta sa aming kaso, ngunit ito ay dahil lamang ang mga query ay napaka-simple. Sa hinaharap, pinapayagan ka ng WHERE na buuin nang eksakto ang row filter, at ang tinukoy pagkatapos ng ON ay nagbibigay-daan sa iyong magsulat ng mga kumplikadong script para sa pag-link ng mga talahanayan. Maaari ka ring gumamit ng mga alias (table aliases) kapag ginagamit ang JOIN statement. Halimbawa:

SELECT * FROM employee e JOIN task t ON e.id = t.emploee_id