⊗ppPmDOFR 385 of 447 menu

PHPda ma'lumotlarning qarindosh aloqalari

Oldimizda otalar va o'g'il bolalarni saqlash vazifasi tursin. Har bir otaning faqat bitta o'g'li bo'lsin, o'g'il esa o'z navbatida bitta o'g'ilga ega bo'lsin.

Ma'lumotlarni qanday saqlashimizni o'ylab topishimiz kerak. Yigitga keladigan birinchi g'oya - ikkita jadval yaratish: parents otalar uchun va sons o'g'il bolalar uchun. Keyin bu jadvallarni qandaydir maydon bilan bog'lash: son_id yoki parent_id.

Biroq, bu g'oya unchaki yaxshi emas - chunki bir xil shaxs bir vaqtning o'zida ham ota, ham o'g'il bo'lishi mumkin - va uni ikkala jadvalda ham saqlash kerak bo'ladi, bu esa qulay emas, ko'proq joy egallaydi va osonlik bilan xatolarga olib keladi.

Yaxshiroq variant - jadvalni o'zi bilan bog'lash: users jadvalini yaratamiz, unda barcha foydalanuvchilarni saqlaymiz va har biriga son_id maydonini qo'shamiz, unda shu jadvaldagi o'g'ilning id si 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 olib keladigan so'rov yozamiz.

Boshlash uchun avval foydalanuvchilarni olib kelaylik:

SELECT * FROM users

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

LEFT JOIN users as sons

Endi 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 bor. Har bir kategoriya ota kategoriyaga tegishli bo'lishi mumkin, o'z navbatida ota kategoriya o'z ota kategoriyasiga va hokazo. Saqlash tuzilmasini yozib bering.

Kategoriyani uning ota kategoriyasi bilan birga olib keladigan so'rov yozing.

Kategoriyani uning otasi va bobosi (parent va grandparent) bilan birga olib keladigan so'rov yozing.

Kategoriyani uning otasi, bobosi va buvisi (parent, grandparent va great-grandparent) bilan birga olib keladigan 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