SQL Bog’lanishlar (JOINS) 1-qism

Agar SQL tilida SELECT kalit so'zi yordamida bir emas bir nechta jadvallarga murojaat qilishni ya'ni bir nechta jadvallardan ma'lumot olishni xohlasangiz sizga SQL tilidagi JOIN kalit so'zi yordam beradi. Ikki yoki undan ko'proq jadvallarning bog'lanishi ularda umumiy ustunga asoslanadi.

SQL tilida bog'lanishlar (JOINS)ning bir nechta turlari mavjud. Ular quyidagi rasmda tasvirlangan:

Endi ularni batafsilroq ko'rib chiqamiz.

INNER JOIN

INNER JOIN bir-biriga bog'langan ustunlarda mos kelgan ikkala jadvalda ham mavjud qatorlarni qaytaradi. Sintaksisi quyidagicha:

SELECT ustun_nom(lar)i FROM jadval1
INNER JOIN jadval2 ON jadval1.ustun_nomi = jadval2.ustun_nomi;

Keling quyidagi ikkita jadvalni olaylik.

Xaridorlar jadvali:

Maqolalar jadvali:

Ko'rib turganingizdek ikkala jadvalda ham XaridorId nomli ustun mavjud. Endi ikkala jadvalda ham mavjud bo'lgan Xaridorlar haqida ma'lumotlarni olamiz.

SELECT Xaridorlar.XaridorId, Xaridorlar.XaridorIsmi, Maqolalar.MaqolaId, Maqolalar.MaqolaSana FROM Xaridorlar INNER JOIN Maqolalar ON Xaridorlar.XaridorId = Maqolalar.XaridorId;

Faraz qilaylik, 3 ta jadval o'zaro bog'langan. Bu holatda SQL so'rov quyidagicha ko'rinishda bo'lishi mumkin.

SELECT Xaridorlar.XaridorId, Maqolalar.MaqolaId, Mualliflar.MuallifId FROM ((Xaridorlar
INNER JOIN Maqolalar ON Xaridorlar.XaridorId = Maqolalar.XaridorId)
INNER JOIN Mualliflar ON Maqolalar.MuallifId = Mualliflar.MuallifId);

LEFT JOIN

LEFT JOIN chap ya'ni birinchi jadvaldagi barcha qatorlarni, va agar mavjud bo'lsa unga mos ikkinchi jadvaldagi qatorlarni chop etadi. Agar o'ng jadvalda mos qator yo'q bo'lsa, o'sha bog'langan ustun qiymati 0 yoki null bo'ladi.

Yuqoridagi ikkala bog'langan jadvallani misol qilib quyidagi so'rovni yozamiz.

SELECT Xaridorlar.XaridorId, Xaridorlar.XaridorIsmi, Maqolalar.MaqolaId FROM Xaridorlar 
LEFT JOIN Maqolalar ON Xaridorlar.XaridorId = Maqolalar.XaridorId;

RIGHT JOIN

RIGHT JOIN o'ng ya'ni ikkinchi jadvaldagi barcha qatorlarni, va agar mavjud bo'lsa unga mos birinchi jadvaldagi qatorlarni chop etadi. Agar chap jadvalda mos qator yo'q bo'lsa, o'sha bog'langan ustun qiymati 0 yoki null bo'ladi.

Yuqoridagi ikkala bog'langan jadvallani misol qilib quyidagi so'rovni yozamiz.

SELECT Xaridorlar.XaridorId, Maqolalar.MaqolaId, Maqolalar.MaqolaSana FROM Xaridorlar 
RIGHT JOIN Maqolalar ON Xaridorlar.XaridorId = Maqolalar.XaridorId;