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 :

countries
id name
1 country1
2 country2

La table des villes :

cities
id name country_id
1 city1 1
2 city2 1
3 city3 2

La table des utilisateurs restera inchangée :

users
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 :

sqlSELECT
  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

Задание 1

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.

Задание 2

Écrivez une requête qui récupérera les produits, ainsi que leurs sous-catégories et catégories.

Задание 3

Écrivez une requête qui récupérera les sous-catégories ainsi que leurs catégories.