Lanț de tabele conectate în Python

Să presupunem că acum utilizatorii trăiesc în anumite orașe, iar aceste orașe sunt situate în diferite țări. În acest caz, pentru stocare vom avea nevoie de trei tabele: utilizatorii vor fi conectați cu orașele, iar orașele - cu țările. În același timp, nu vom avea nevoie de un câmp de legătură al utilizatorilor cu țările - deoarece utilizatorii vor fi oricum conectați cu țările prin legătura orașelor și țărilor.

Să ne uităm la tabelele noastre. Tabelul cu țări:

countries
id name
1 country1
2 country2

Tabelul cu orașe:

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

Tabelul cu utilizatori va rămâne neschimbat:

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

Interogări

Pentru a obține utilizatorii împreună cu orașele și țările lor, va trebui să facem două join-uri: primul va alătura orașele la utilizatori, iar al doilea - țările la orașe:

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

Sarcini practice

Задание 1

Să presupunem că produsele aparțin unei anumite subcategorii, iar subcategoriile aparțin unei anumite categorii. Descrieți structura de stocare.

Задание 2

Scrieți o interogare care va extrage produsele, împreună cu subcategoriile și categoriile lor.

Задание 3

Scrieți o interogare care va extrage subcategoriile împreună cu categoriile lor.