Ketting van gekoppelde tabellen in Python

Stel dat gebruikers in bepaalde steden wonen, en deze steden zich in verschillende landen bevinden. In dat geval hebben we drie tabellen nodig voor opslag: gebruikers zullen worden gekoppeld aan steden, en steden aan landen. We hebben geen direct koppelingsveld nodig tussen gebruikers en landen - omdat gebruikers toch al via de steden aan landen worden gekoppeld.

Laten we naar onze tabellen kijken. De tabel met landen:

countries
id name
1 country1
2 country2

De tabel met steden:

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

De tabel met gebruikers blijft ongewijzigd:

users
id name city_id
1 user1 1
2 user2 1
3 user3 2
4 user4 1
5 user5 3
6 user6 2

Query's

Om gebruikers op te halen samen met hun steden en landen, moeten we twee joins maken: de eerste voegt steden toe aan gebruikers, en de tweede voegt landen toe aan steden:

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

Praktische opdrachten

Задание 1

Stel dat producten tot een bepaalde subcategorie behoren, en subcategorieën tot een bepaalde categorie. Beschrijf de opslagstructuur.

Задание 2

Schrijf een query die producten ophaalt, samen met hun subcategorieën en categorieën.

Задание 3

Schrijf een query die subcategorieën ophaalt samen met hun categorieën.