Darsliklar SQL Bog’lanishlar (JOINS) 2-qism

SQL SQL Bog’lanishlar (JOINS) 2-qism

Bog’lanishlar (JOINS) — 2-qism — JOIN turlarini chuqurroq o’rganamiz. O’tgan darsda INNER JOIN faqat mos keladigan qatorlarni birlashtirdi. Biroq ba’zan buyurtmasi yo’q foydalanuvchilarni ham ko’rish kerak bo’ladi. Aynan shu ehtiyoj uchun LEFT JOIN, RIGHT JOIN va FULL JOIN mavjud.

LEFT / RIGHT / FULL JOINjadvallarni birlashtirishning turli usullari. Ular mos kelmaydigan qatorlarni ham natijaga qo’shishi bilan INNER JOIN dan farq qiladi.

Ikki jadval

O’tgan darsdagi jadvallar bilan davom etamiz. foydalanuvchilar:

id ism
1 Farrux
2 Master Sherkulov
3 Aziz

buyurtmalar:

id foydalanuvchi_id mahsulot
101 1 Telefon
102 2 Noutbuk

LEFT JOIN

LEFT JOIN chap jadvaldagi barcha qatorlarni oladi, o’ng jadvaldan esa mos kelganini qo’shadi. Mos kelmasa, NULL qo’yadi:

SELECT f.ism, b.mahsulot
FROM foydalanuvchilar f
LEFT JOIN buyurtmalar b
ON f.id = b.foydalanuvchi_id;

Natija:

ism mahsulot
Farrux Telefon
Master Sherkulov Noutbuk
Aziz NULL

Diqqat: Aziz ham chiqdi, garchi uning buyurtmasi yo’q — mahsulot ustunida NULL turadi. Bu “barcha foydalanuvchilar, jumladan buyurtmasizlar” degan savolga javob beradi.

JOIN turlari

JOIN turlarini jadvalda solishtiramiz:

Tur Nimani qaytaradi
INNER JOIN faqat ikkala jadvalda mos qatorlar
LEFT JOIN chap jadvalning hammasi + mos o’ng
RIGHT JOIN o’ng jadvalning hammasi + mos chap
FULL JOIN ikkala jadvalning hammasi

RIGHT JOIN

RIGHT JOINLEFT JOIN ning aksi: o’ng jadvaldagi barcha qatorlarni oladi. Amalda LEFT JOIN ko’proq ishlatiladi, chunki jadval tartibini o’zgartirib, bir xil natijaga erishish mumkin:

SELECT f.ism, b.mahsulot
FROM foydalanuvchilar f
RIGHT JOIN buyurtmalar b
ON f.id = b.foydalanuvchi_id;

Natija (barcha buyurtmalar, foydalanuvchisi bo’lsa qo’shiladi):

ism mahsulot
Farrux Telefon
Master Sherkulov Noutbuk

Amaliy qo’llanish

JOIN turlari real savollarni hal qiladi. LEFT JOIN bilan “hech qachon buyurtma qilmagan foydalanuvchilarni topish” mumkin:

SELECT f.ism
FROM foydalanuvchilar f
LEFT JOIN buyurtmalar b ON f.id = b.foydalanuvchi_id
WHERE b.id IS NULL;

Natija:

ism
Aziz

WHERE b.id IS NULL — buyurtmasi yo’q (bog’lanmagan) foydalanuvchilarni ajratdi. Bu marketing va tahlilda juda foydali naqsh.

Xulosa

Bu bo’limda LEFT, RIGHT, FULL JOIN turlarini, ularning INNER JOIN dan farqini va IS NULL bilan bog’lanmagan qatorlarni topishni ko’rib chiqdik. JOIN turlari ma’lumotni turli nuqtai nazardan ko’rish imkonini beradi. Keyingi darsda GROUP BY va HAVING bilan guruhlashga o’tamiz.