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 JOIN — jadvallarni birlashtirishning turli usullari. Ular mos kelmaydigan qatorlarni ham natijaga qo’shishi bilan
INNER JOINdan 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 JOIN — LEFT 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.