Python-da Əlaqəli Cədvəllər Zənciri
İndi fərz edək ki, istifadəçilər müəyyən şəhərlərdə yaşayır və bu şəhərlər müxtəlif ölkələrdə yerləşir. Bu halda saxlama üçün bizə üç cədvəl lazım olacaq: istifadəçilər şəhərlərlə, şəhərlər isə ölkələrlə əlaqələndiriləcək. Eyni zamanda, istifadəçiləri ölkələrlə birbaşa əlaqələndirmək üçün əlavə bir sahəyə ehtiyac olmayacaq - axı istifadəçilər şəhərlər və ölkələr arasındakı əlaqə vasitəsilə artıq ölkələrlə əlaqəli olacaqlar.
Gəlin cədvəllərimizə nəzər salaq. Ölkələr cədvəli:
| id | name |
|---|---|
| 1 | country1 |
| 2 | country2 |
Şəhərlər cədvəli:
| id | name | country_id |
|---|---|---|
| 1 | city1 | 1 |
| 2 | city2 | 1 |
| 3 | city3 | 2 |
İstifadəçilər cədvəli dəyişməz qalacaq:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Sorğular
İstifadəçiləri onların şəhərləri və ölkələri ilə birlikdə əldə etmək üçün iki birləşmə (join) etməliyik: birinci şəhərləri istifadəçilərə, ikinci isə ölkələri şəhərlərə qoşacaq:
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
Praktiki Tapşırıqlar
Fərz edək ki, məhsullar müəyyən altkateqoriyaya, altkateqoriyalar isə müəyyən kateqoriyaya aiddir. Saxlama quruluşunu təsvir edin.
Məhsulları onların altkateqoriyaları və kateqoriyaları ilə birlikdə çıxaran sorğu yazın.
Altkateqoriyaları onların kateqoriyaları ilə birlikdə çıxaran sorğu yazın.