Python-дағы байланысты кестелер тізбегі
Енді пайдаланушылар белгілі бір қалаларда тұрады делік, ал бұл қалалар әртүрлі елдерде орналасқан. Онда сақтау үшін бізге үш кесте қажет болады: пайдаланушылар қалалармен, ал қалалар елдермен байланысады. Бұл ретте бізге пайдаланушыларды елдермен байланыстыру өрісі қажет болмайды - өйткені пайдаланушылар қалалар мен елдердің байланысы арқылы қалай болса, соншалықты елдермен байланысады.
Кестелерімізге тоқталайық. Елдер кестесі:
| id | name |
|---|---|
| 1 | country1 |
| 2 | country2 |
Қалалар кестесі:
| id | name | country_id |
|---|---|---|
| 1 | city1 | 1 |
| 2 | city2 | 1 |
| 3 | city3 | 2 |
Пайдаланушылар кестесі өзгеріссіз қалады:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Сұраныстар
Пайдаланушыларды олардың қалалары мен елдерімен бірге алу үшін бізге екі қосылым жасау керек болады: біріншісі қалаларды пайдаланушыларға қосады, ал екіншісі елдерді қалаларға қосады:
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
Практикалық тапсырмалар
Тауарлар белгілі бір ішкі санатқа жатады, ал ішкі санаттар белгілі бір санатқа жатады делік. Сақтау құрылымын сипаттаңыз.
Тауарларды олардың ішкі санаттары мен санаттарымен бірге алатын сұраныс жазыңыз.
Ішкі санаттарды олардың санаттарымен бірге алатын сұраныс жазыңыз.