JOIN operatori

All lectures for UZ purposes
Daraja, Dars
Mavjud

JOIN operatorini paydo bo'lishi sabablari

Jadvallardagi ma'lumotlar soni oshgani sayin ko'pincha ularning qiymatlari dublikatlarga aylanib qoladi. Masalan, product jadvalida brend nomlari bor. Ular ba'zida takrorlanadi. Ularni alohida brand jadvali yaratish foydali bo'lardi, unda quyidagi ma'lumotlar mavjud bo'lishi mumkin:

  • id – brendning id-si;
  • name – brend nomi;
  • company_owner – brend egasi kompaniyaning ismi;
  • company_contacts – brend egasi kompaniyaning kontaktlari.

Keyin biz barcha manzillarni alohida qilib chiqadigan address jadvalini yaratmoqchi bo'lardik:

  • id – manzil id-si;
  • country;
  • region;
  • city;
  • street;
  • house;
  • zip.

Bundan tashqari, ushbu jadvalda nafaqat brend egasi kompaniyalarining manzillari, balki mijozlar va xodimlar manzillarini ham saqlash mumkin. Va bu yondashuv - bu faqat ma'lumotlar sonining (jadvallardagi satrlar sonining) o'sishi oqibatidir. Bu jadvaldagi ma'lumotlar bilan ishlash va ularning yaxlitligini saqlashni osonlashtiradi.

Agar sizda 5 ta xodim bo'lsa, ularning kasbini occupation ustunida ko'rsatishingiz mumkin. Agar sizda 5 ming xodim bo'lsa, x kasblar va ularning vazifalari ro'yxatini o'z ichiga olgan jadval kerak bo'ladi.

Java tilida, umuman olganda, shunga o'xshash narsa mavjud. Agar sizning metodda ko'p kod bo'lsa, uni bir nechta metodlarga ajratishni xohlaysiz. Agar klassda ko'p metodlar bo'lsa, uni bir nechta klasslarga ajratishni xohlaysiz.

Shuning uchun, katta ma'lumotlar bazalarida jadvallar soni minglabga yetadi. Va deyarli barcha so'rovlar bir vaqtning o'zida bir nechta jadvallar bo'yicha amalga oshiriladi. Uchta jadvalning har birida ming yozuvlar bo'lsa, ularning Dekart ko'paytmasi allaqachon milliard satrlarni tashkil qiladi.

Aslida, milliard satrlarni WHERE yordamida filtr qilish bir necha soatni talab qilishi mumkin. Shuning uchun, SQL tilining yaratuvchilari o'z yechimini taklif qilishdi – bu JOIN operatori.

JOIN operatori bilan tanishish

JOIN operatori SQL-serverga barcha jadvallarning barcha satrlarining Dekart ko'paytmasi emas, balki turli jadvallarning ID (yoki boshqa usul orqali) yordamida bir-biriga murojaat qilayotgan satrlarni aqlli birlashtirish kerakligini aniq aytish uchun ishlatiladi. Server JOIN operatori yordamida jadvallarni birlashtirishning alohida algoritmiga ega, bu esa bunday operatsiyalarni tezroq bajarishga imkon beradi. JOIN operatorining umumiy ko'rinishi quyidagicha:


jadval1 JOIN jadval2 ON shart 

Bu yerda jadval1 va jadval2 jadvallarini bitta jadvalga birlashtirish kerakligi aytilgan, va birlashtirish mezoni sifatida shart ishlatilishi kerakligi aytilgan.

Keling, eski misolimizni olaylik:


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

Va uni JOIN operatori bilan qayta yozamiz:


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

Har ikkala so'rov ham, bizning holatda, bir xil natija beradi, lekin bu faqat so'rovlar juda oddiy bo'lgani uchun. Keyinchalik WHERE aynan satr filtrini oshirish imkonini beradi, ON dan keyin esa jadvallarni bog'lashning murakkab stsenariylarini yozish mumkin. Siz aynan shuningdek, JOIN operatoridan foydalanishda aliaslar (jadvalning taxalluslari) ishlatishingiz mumkin. Misol:


SELECT * FROM employee e JOIN task t ON e.id = t.emploee_id
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION