Verkettung verknüpfter Tabellen in Python

Nehmen wir an, Benutzer leben in bestimmten Städten, und diese Städte befinden sich in verschiedenen Ländern. In diesem Fall benötigen wir zur Speicherung bereits drei Tabellen: Die Benutzer werden mit den Städten verknüpft, und die Städte - mit den Ländern. Dabei brauchen wir kein Verknüpfungsfeld für Benutzer mit Ländern - denn die Benutzer sind ja bereits mit den Ländern über die Verknüpfung der Städte und Länder verbunden.

Schauen wir uns unsere Tabellen an. Die Tabelle mit den Ländern:

countries
id name
1 country1
2 country2

Tabelle mit den Städten:

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

Die Tabelle mit den Benutzern bleibt unverändert:

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

Abfragen

Um Benutzer zusammen mit ihren Städten und Ländern abzurufen, müssen wir zwei Joins durchführen: Der erste verknüpft Städte mit Benutzern, und der zweite - Länder mit Städten:

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 Aufgaben

Задание 1

Nehmen wir an, Produkte gehören zu einer bestimmten Unterkategorie, und Unterkategorien gehören zu einer bestimmten Kategorie. Beschreiben Sie die Speicherstruktur.

Задание 2

Schreiben Sie eine Abfrage, die Produkte abruft, zusammen mit ihren Unterkategorien und Kategorien.

Задание 3

Schreiben Sie eine Abfrage, die Unterkategorien zusammen mit ihren Kategorien abruft.