6-dars. Ma'lumotlarni birlashtirish (JOIN)

JOIN buyruqlari

JOIN — bir nechta table’dagi ma’lumotlarni birlashtirish uchun ishlatiladi. Chunki real projectlarda ma’lumotlar odatda bitta table’da saqlanmaydi.

Masalan:

  • users

  • orders

  • products alohida table’larda bo‘ladi.

JOIN yordamida ularni bog‘laymiz.

Misol uchun jadvallar

Customers

customer_id

name

1

Ali

2

Vali

3

Sardor

Orders

order_id

customer_id

product

101

1

Laptop

102

1

Phone

103

2

Mouse

104

5

Keyboard

sqlll.png

INNER JOIN

INNER JOIN — ikkala jadvalda ham mavjud bo‘lgan ma’lumotlarni chiqaradi. JOIN joyida JOIN’ni o’zi bo’lsa avtomatik ravishda INNER JOIN ishlaydi.

SELECT * FROM customers as c
INNER JOIN orders as o
ON c.customer_id = o.customer_id

name

product

Ali

Laptop

Ali

Phone

Vali

Mouse

⚠️ Sardor chiqmaydi.

Chunki unda order yo‘q.

⚠️ Keyboard ham chiqmaydi.

Chunki customer_id = 5 customers table’da yo‘q.


LEFT JOIN

LEFT JOIN — chap table’dagi barcha ma’lumotlarni chiqaradi. Mos kelmagan joylar NULL bo‘ladi.

SELECT * FROM customers as c
LEFT JOIN orders as o
ON c.customer_id = o.customer_id

name

product

Ali

Laptop

Ali

Phone

Vali

Mouse

Sardor

NULL

Muhim:

  • customers → chap table

  • chap table’dagi hamma data chiqadi


RIGHT JOIN

RIGHT JOIN — o‘ng jadvaldagi barcha ma’lumotlarni chiqaradi.

SELECT * FROM customers as c
RIGHT JOIN orders as o
ON c.customer_id = o.customer_id

name

product

Ali

Laptop

Ali

Phone

Vali

Mouse

NULL

Keyboard

Muhim:

  • orders → o‘ng table

  • orders’dagi barcha data chiqadi


FULL JOIN

FULL JOIN — ikkala jadvaldagi barcha ma’lumotlarni chiqaradi. Mos kelmagan joylar NULL bo‘ladi.

SELECT * FROM customers as c
FULL JOIN orders as o
ON c.customer_id= o.customer_id

name

product

Ali

Laptop

Ali

Phone

Vali

Mouse

Sardor

NULL

NULL

Keyboard


JOIN’larni oddiy eslab qolish

JOIN turi

Nima chiqaradi

INNER JOIN

faqat mos kelganlar

LEFT JOIN

chapdagilar hammasi

RIGHT JOIN

o‘ngdagilar hammasi

FULL JOIN

ikkala tomondagi hammasi


ANTI JOINS

ANTION JOINS

Vazifasi

Sintaksisi

LEFT ANTI JOIN

Chap jadvalda bor, o‘ng jadvalda yo‘q ma’lumotlarni chiqaradi.

SELECT * FROM customers as c

LEFT JOIN orders as o

ON c.customer_id = o.customer_id

WHERE o.customer_id IS NULL

RIGHT ANTI JOIN

O’ng jadvalda bor, chap jadvalda yo‘q ma’lumotlarni chiqaradi.

SELECT * FROM customers as c

RIGHT JOIN orders as o

ON c.customer_id = o.customer_id

WHERE c.customer_id IS NULL

FULL ANTI JOIN

Ikkala jadvalda mos kelmaydigan ma’lumotlar chiqaradi

SELECT * FROM customers as c

FULLJOIN orders as o

ON c.customer_id = o.customer_id

WHERE c.customer_id IS NULL

OR o.customer_id IS NULL


CROSS JOIN

CROSS JOIN — barcha kombinatsiyalarni chiqaradi.

SELECT * FROM colors
CROSS JOIN sizes

Colors

Sizes

Red

S

Blue

M

color

size

Red

S

Red

M

Blue

S

Blue

M

CROSS JOIN qachon ishlatiladi?

Masalan:

  • mahsulot variantlari

  • kombinatsiyalar

  • test data yaratish


Qaysi JOIN’ni qachon tanlash kerak?

Holat

Qaysi JOIN

Faqat mos kelgan data kerak

INNER JOIN

Chap table muhim bo‘lsa

LEFT JOIN

O‘ng table muhim bo‘lsa

RIGHT JOIN

Hammasi kerak bo‘lsa

FULL JOIN

Mos kelmaganlarni topish

ANTI JOIN

Kombinatsiya kerak bo‘lsa

CROSS JOIN


Bir nechta jadvallarni birlashtirish

Bir nechta table ham JOIN qilsa bo‘ladi.

SELECT
    c.name,
    o.order_id,
    p.product_name
FROM customers as c
JOIN orders as o
ON c.customer_id = o.customer_id
JOIN products as p
ON o.product_id = p.product_id

Darsga tegishli SQL fayllar

⬇️ Darsda ishlatilgan .sql fayli: 📎 dars_6.sql (3.7 KB)

⬇️ Uyga vazifa .sql fayli: 📎 dars_6_uy_ishi.sql (3.5 KB)

📝 Bilimingizni sinang

Maqolani o'qib chiqdingizmi? Quyidagi test bilan tushunganingizni tekshiring.

1. Quyidagi so'rov natijasida nima chiqadi? SELECT c.customer_name, o.order_id FROM customers c LEFT JOIN orders o ON c.customer_id = o.customer_id;

2. Quyidagi SQL so'rovi natijasida nima chiqadi? SELECT c.customer_name, o.order_id FROM customers c INNER JOIN orders o ON c.customer_id = o.customer_id;

Ulashish:

🔎O'xshash maqolalar