Veriga povezanih tabel v Pythonu

Recimo, da uporabniki živijo v določenih mestih, ta mesta pa se nahajajo v različnih državah. V tem primeru bomo za shranjevanje potrebovali že tri tabele: uporabniki bodo povezani z mesti, mesta pa z državami. Pri tem ne bomo potrebovali polja za povezavo uporabnikov z državami - saj bodo uporabniki tako ali tako povezani z državami prek povezave mest in držav.

Poglejmo si naše tabele. Tabela z državami:

countries
id name
1 country1
2 country2

Tabela z mesti:

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

Tabela z uporabniki bo ostala nespremenjena:

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

Poizvedbe

Da pridobimo uporabnike skupaj z njunimi mesti in državami, bomo morali narediti dve združitvi (JOIN): prva bo pridružila mesta k uporabnikom, druga pa države k mestom:

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

Praktične naloge

Задание 1

Recimo, da izdelki pripadajo določeni podkategoriji, podkategorije pa pripadajo določeni kategoriji. Opišite strukturo shranjevanja.

Задание 2

Napišite poizvedbo, ki bo pridobila izdelke, skupaj z njihovimi podkategorijami in kategorijami.

Задание 3

Napišite poizvedbo, ki bo pridobila podkategorije skupaj z njihovimi kategorijami.