LEFT JOIN va juftsiz qatorlar
128 daq
INNER JOIN jufti yo‘q qatorlarni jimgina tashlab yuboradi. Lekin ko‘pincha aynan shular qiziq: «hech qachon buyurtma bermagan mijozlar», «kuratori yo‘q guruhlar», «hali baho olmagan talabalar».
LEFT JOIN
Chap jadvalning hamma qatorlari qoladi. O‘ng jadvalda jufti bo‘lmasa — o‘ng tomondagi ustunlar NULL bo‘lib chiqadi.
Kuratori yo‘q guruhlarda curator — NULL.
Juftsizlarni topish
Eng foydali usul: LEFT JOIN + WHERE o‘ng.id IS NULL.
Bu — hech qachon buyurtma bermagan mijozlar.
RIGHT JOIN va FULL JOIN
RIGHT JOIN—LEFT JOINning ko‘zgudagi aksi: o‘ng jadval to‘liq qoladi. Odatda jadvallar o‘rnini almashtirib,LEFT JOINyozish tushunarliroq.FULL JOIN— ikkala tomonning ham juftsiz qatorlari qoladi.
PostgreSQL FULL OUTER JOIN ni qo‘llab-quvvatlaydi.
Ehtiyot bo‘ling: shart WHERE dami yoki ON dami?
LEFT JOIN da o‘ng jadval uchun shartni WHERE ga yozsangiz, juftsiz qatorlar (NULLlar) shartdan o‘tmaydi va LEFT JOIN oddiy JOIN ga aylanib qoladi. O‘ng jadval sharti ON ichida bo‘lishi kerak:
COUNT(o.id) — NULL larni sanamaydi, shuning uchun bekor qilingan buyurtmasi yo‘q mijozda 0 chiqadi.
Hech qanday sharh (reviews) yozilmagan mahsulotlarning nomini chiqaring.
Har bir fakultet nomini va undagi ustozlar sonini chiqaring. Ustozi yo‘q fakultet bo‘lsa, unda 0 chiqsin.
Esda qoldiring
LEFT JOIN— chap jadval to‘liq qoladi, jufti yo‘qlarda o‘ng tomonNULL.- Juftsizlar:
LEFT JOIN … WHERE o‘ng.id IS NULL. - O‘ng jadval sharti —
ONichida, aks holdaLEFT JOINishlamay qoladi.