Chaîne de tables liées en Python
Supposons maintenant que les utilisateurs vivent dans des villes spécifiques, et que ces villes soient situées dans différents pays. Dans ce cas, pour le stockage, nous aurons besoin de trois tables : les utilisateurs seront liés aux villes, et les villes - aux pays. De plus, nous n'aurons pas besoin d'un champ de liaison des utilisateurs avec les pays - car les utilisateurs seront de toute façon liés aux pays via la liaison des villes et des pays.
Regardons nos tables. La table des pays :
| id | name |
|---|---|
| 1 | country1 |
| 2 | country2 |
La table des villes :
| id | name | country_id |
|---|---|---|
| 1 | city1 | 1 |
| 2 | city2 | 1 |
| 3 | city3 | 2 |
La table des utilisateurs restera inchangée :
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Requêtes
Pour récupérer les utilisateurs ainsi que leurs villes et pays, nous devrons faire deux jointures : la première joindra les villes aux utilisateurs, et la seconde - les pays aux villes :
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
Tâches pratiques
Supposons que les produits appartiennent à une certaine sous-catégorie, et que les sous-catégories appartiennent à une certaine catégorie. Décrivez la structure de stockage.
Écrivez une requête qui récupérera les produits, ainsi que leurs sous-catégories et catégories.
Écrivez une requête qui récupérera les sous-catégories ainsi que leurs catégories.