SQL JOIN — jadvallarni bog'lash

Shu paytgacha bitta jadval bilan ishladik. Haqiqiy bazada esa ma’lumot bir nechta jadvalga bo’lingan bo’ladi. Masalan buyurtmada faqat mijoz raqami turadi, ismi emas. Bu jadvallarni birlashtirish uchun JOIN ishlatiladi — bu SQL’ning eng kuchli imkoniyati.

Namuna bazadagi buyurtmalar jadvali:

id mijoz_id mahsulot_id soni sana
1 1 2 3 2026-07-01
2 1 4 1 2026-07-02
3 2 1 10 2026-07-02
4 3 3 2 2026-07-05
5 2 8 5 2026-07-06
6 1 7 4 2026-07-08

Nega ma’lumot bo’lingan

buyurtmalar da mijozning ismi yo’q — faqat mijoz_id (raqami). Sabab: agar har buyurtmada ism, shahar, yoshi takrorlansa, ma’lumot ko’payadi va mijoz ismini o’zgartirish kerak bo’lsa, uni yuzta joyda tuzatishga to’g’ri kelardi. Shuning uchun mijoz ma’lumoti bir marta mijozlar da saqlanadi, buyurtma esa faqat uning raqamiga ishora qiladi.

JOIN shu ishorani ochadi: raqam orqali mijozlar dan ismni topib, buyurtmaga qo’shib beradi.

JOIN — ikki jadvalni birlashtirish

Har buyurtmani mijoz ismi bilan ko’ramiz. buyurtmalar va mijozlar ni mijoz_id orqali bog’laymiz:

SELECT m.ism, b.mahsulot_id, b.soni
FROM buyurtmalar AS b
JOIN mijozlar AS m ON b.mijoz_id = m.id;

Natija — endi raqam o’rniga ism:

ism mahsulot_id soni
Aziz 2 3
Aziz 4 1
Dilnoza 1 10
Bobur 3 2
Dilnoza 8 5
Aziz 4 4

ON b.mijoz_id = m.idbog’lovchi shart: buyurtmadagi mijoz_id mijozdagi id ga teng bo’lgan qatorlar birlashtiriladi. b va mjadval taxalluslari: qaysi ustun qaysi jadvaldan ekanini ko’rsatadi.

Uch jadvalni bog’lash

mahsulot_id ham raqam. Uni ham nomga aylantirish uchun yana bitta JOIN qo’shamiz — bu safar mahsulotlar bilan:

SELECT m.ism, p.nom, b.soni
FROM buyurtmalar AS b
JOIN mijozlar AS m ON b.mijoz_id = m.id
JOIN mahsulotlar AS p ON b.mahsulot_id = p.id;

O’zingiz ishga tushirib ko’ring — so’rovni tahrirlashingiz ham mumkin:

SQL · namuna baza

Natija — to’liq o’qiladigan ko’rinish: kim, nimani, nechta:

ism nom soni
Aziz Non 3
Aziz Choy 1
Dilnoza Olma 10
Bobur Sut 2
Dilnoza Guruch 5
Aziz Suv 4

Endi natija odam o’qiy oladigan holga keldi — hech qanday raqam qolmadi.

Amaliy mashq

Jadvallarni bog’lang:

  1. buyurtmalar va mijozlar ni mijoz_id orqali bog’lang;
  2. natijaga mijoz ismi va buyurtma sonini chiqaring;
  3. uchinchi jadval mahsulotlar ni ham qo’shing;
  4. har buyurtma uchun: kim, nima, nechta — uch ustunda ko’rsating;
  5. ON shartini ataylab noto’g’ri yozing — natija qanday o’zgardi?

5-qadamda nechta qator chiqdi va nega?

Qisqacha xulosa

  • Ma’lumot takrorlanmasligi uchun jadvallarga bo’linadi; buyurtmada ism emas, mijoz_id (raqam) turadi.
  • JOIN ... ON — ikki jadvalni bog’lovchi shart orqali birlashtiradi: ON b.mijoz_id = m.id.
  • Chet kalit — boshqa jadvalning id siga ishora qiluvchi ustun.
  • Bir nechta JOIN bilan uch va undan ko’p jadvalni birlashtirish mumkin.
  • JOIN (INNER) faqat mos qatorlarni beradi; mos kelmaganlar tushadi.

Keyingi darsda GROUP BY — qatorlarni guruhlab, har guruh uchun umumiy hisob chiqarishni ko’ramiz.

Bu dars foydali bo'ldimi?

marta ko'rildi