Bog‘langan jadvallar zanjiri
Endi foydalanuvchilar ma’lum shaharlarda yashasin, bu shaharlar esa turli mamlakatlarda joylashgan. Bunday holatda saqlash uchun bizga uchta jadval kerak bo‘ladi: foydalanuvchilar shaharlar bilan bog‘lanadi, shaharlar esa mamlakatlar bilan. Bunda bizga foydalanuvchilarni mamlakatlar bilan bog‘lovchi maydon kerak bo‘lmaydi - chunki foydalanuvchilar shaharlar va mamlakatlar orqali mamlakatlar bilan bog‘langan bo‘ladi.
Keling, jadvallarimizni ko‘rib chiqaylik. Mamlakatlar jadvali:
| id | name |
|---|---|
| 1 | country1 |
| 2 | country2 |
Shaharlar jadvali:
| id | name | country_id |
|---|---|---|
| 1 | city1 | 1 |
| 2 | city2 | 1 |
| 3 | city3 | 2 |
Foydalanuvchilar jadvali o‘zgarishsiz qoladi:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
So‘rovlar
Foydalanuvchilarni ularning shaharlari va mamlakatlari bilan birga olish uchun biz ikki join qilishimiz kerak bo‘ladi: birinchi shaharlarni foydalanuvchilarga qo‘shadi, ikkinchisi esa mamlakatlarni shaharlarga qo‘shadi:
SELECT
users.name,
cities.name as city_name,
countries.name as country_name
FROM
users
LEFT JOIN cities ON cities.id=users.city_id
LEFT JOIN countries ON countries.id=cities.country_id
Amaliy vazifalar
Mahsulotlar ma’lum bir pastki kategoriyaga tegishli bo‘lsin, pastki kategoriyalar esa ma’lum bir kategoriyaga tegishli bo‘lsin. Saqlash tuzilmasini yozing.
Mahsulotlarni, ularning pastki kategoriyalari va kategoriyalari bilan birga oladigan so‘rov yozing.
Pastki kategoriyalarni ularning kategoriyalari bilan birga oladigan so‘rov yozing.