INNER JOIN
119 daq
JOIN ikki jadvalni kalitlari bo‘yicha birlashtiradi. Bu SQL’ning eng kuchli va eng ko‘p ishlatiladigan imkoniyatlaridan biri.
Qolip
SELECT …
FROM jadval_a
JOIN jadval_b ON jadval_a.kalit = jadval_b.kalit;ON dan keyin — qaysi qatorlar bir-biriga mos kelishi sharti. Odatda bu «tashqi kalit = birlamchi kalit».
Birinchi JOIN
Guruh nomi yonida fakultet nomi:
Ikkala jadvalda ham name ustuni bor, shuning uchun qaysi jadvalniki ekanini yozish shart: study_groups.name.
Taxalluslar — qisqaroq yozish
study_groups g — jadvalga g deb qisqa nom berdik. Ko‘p jadvalli so‘rovlarda bu juda qulay.
JOIN + WHERE + GROUP BY
JOIN dan keyin hammasi odatdagidek ishlaydi: filtr, guruhlash, saralash.
ON ni unutsangiz nima bo‘ladi?
Shartsiz ulashda har bir qator ikkinchi jadvalning har bir qatori bilan juftlashadi. 32 ta guruh × 6 ta fakultet = 192 ta ma’nosiz qator. Bu dekart ko‘paytmasi deyiladi va katta jadvallarda bazani «osib» qo‘yishi mumkin. Natijada juda ko‘p qator chiqsa — birinchi navbatda ON ni tekshiring.
INNER JOIN aslida nima?
JOIN = INNER JOIN. U faqat ikkala jadvalda ham jufti bor qatorlarni qaytaradi. Masalan, kuratori yo‘q guruh teachers bilan ulanganda natijaga tushmaydi. Juftsiz qatorlar ham kerak bo‘lsa — LEFT JOIN (keyingi dars).
Har bir talabaning first_name ustunini va guruhining nomini chiqaring (study_groups.name).
Har bir mahsulotning nomini va toifasining nomini chiqaring (products.name, categories.name).
Har bir toifada nechta mahsulot bor? Toifa nomi va soni.
Esda qoldiring
JOIN … ON a.fk = b.id— ikki jadvalni kalit bo‘yicha ulaydi.- Bir xil nomli ustunlarda jadval nomini yoki taxallusni yozing.
- Juda ko‘p qator chiqsa —
ONsharti yetishmayapti.