⊗pyPmDOFR 126 of 129 menu

Pythonda Ma'lumotlarning Qarindosh Bog‘lanishlari

Faraz qilaylik, bizning oldimizda otalar va o‘g‘illarni saqlash vazifasi turibdi. Faraz qilaylik, har bir ota faqat bitta o‘g‘ilga ega bo‘lishi mumkin, o‘g‘il esa o‘z navbatida bitta o‘g‘ilga ega bo‘lishi mumkin.

Ma'lumotlarni qanday saqlashimizni o‘ylab topishimiz kerak. Boshga kelgan birinchi g‘oya - ikki jadval yaratish: parents otalar uchun va sons o‘g‘illar uchun. Keyin bu jadvallarni qandaydir maydon bilan bog‘lash: son_id yoki parent_id.

Biroq, bu g‘oya unchali yaxshi emas - chunki o‘sha bir odul bir vaqtning o‘zida ham ota, ham o‘g‘il bo‘lishi mumkin - va uni ikkala jadvalda ham saqlashga to‘g‘ri keladi, bu esa qulay emas, ko‘proq joy egallaydi va xatolarga olib kelishi oson.

Yanada yaxshi variant - jadvalni o‘zi bilan bog‘lash: users jadvalini yaratamiz, unda barcha foydalanuvchilarni saqlaymiz va har biriga son_id maydonini qo‘shamiz, unda o‘sha jadvaldagi o‘g‘ilning id saqlanadi:

users
id name son_id
1 user1 2
2 user2 3
3 user3 null

So‘rovlar

Keling, endi foydalanuvchini uning o‘g‘li bilan birga oladigan so‘rov yozamiz.

Boshlash uchun keling, shunchaki foydalanuvchilarni olaylik:

SELECT * FROM users

Endi foydalanuvchilarga ularning o‘g‘illarini qo‘shamiz (join). Biz jadvalni o‘ziga bog‘laymiz, shuning uchun uning nomini o‘zgartirishimiz kerak:

LEFT JOIN users as sons

Endi biz asosiy jadval va nomi o‘zgartirilgan jadval o‘rtasidagi bog‘lanishni ko‘rsatishimiz mumkin:

LEFT JOIN users as sons ON sons.id=users.son_id

Keling, endi maydonlarni ko‘rsatamiz:

SELECT users.name as user_name, sons.name as son_name

Hammasini birlashtiramiz va quyidagi so‘rovni olamiz:

SELECT users.name as user_name, sons.name as son_name FROM users LEFT JOIN users as sons ON sons.id=users.son_id

Amaliy Vazifalar

Faraz qilaylik, bizda kategoriyalar mavjud. Har bir kategoriya ota-ona kategoriyasiga tegishli bo‘lishi mumkin, o‘sha kategoriya esa o‘z navbatida o‘zining ota-ona kategoriyasiga va hokazo. Saqlesh tuzilishini yozing.

Kategoriyani uning ota-ona kategoriyasi bilan birga oladigan so‘rov yozing.

Kategoriyani uning otasi va bobosi bilan birga oladigan so‘rov yozing.

Kategoriyani uning otasi, bobosi va buvasi bilan birga oladigan so‘rov yozing.

Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish