Αλυσίδα Συνδεδεμένων Πινάκων στην Python

Ας υποθέσουμε τώρα ότι οι χρήστες ζουν σε συγκεκριμένες πόλεις, και αυτές οι πόλεις βρίσκονται σε διαφορετικές χώρες. Σε αυτήν την περίπτωση, για την αποθήκευση θα χρειαστούμε ήδη τρεις πίνακες: οι χρήστες θα συνδέονται με τις πόλεις, και οι πόλεις - με τις χώρες. Σε αυτήν την περίπτωση δεν θα χρειαζόμαστε ένα πεδίο σύνδεσης χρηστών με χώρες - επειδή οι χρήστες θα συνδέονται με τις χώρες μέσω της σύνδεσης των πόλεων και των χωρών.

Ας δούμε τους πίνακές μας. Ο πίνακας με τις χώρες:

countries
id name
1 country1
2 country2

Ο πίνακας με τις πόλεις:

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

Ο πίνακας με τους χρήστες θα παραμείνει αμετάβλητος:

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

Ερωτήματα

Για να ανακτήσουμε τους χρήστες μαζί με τις πόλεις και τις χώρες τους, θα πρέπει να κάνουμε δύο ενώσεις (joins): η πρώτη θα ενώσει τις πόλεις με τους χρήστες, και η δεύτερη - τις χώρες με τις πόλεις:

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

Πρακτικές Ασκήσεις

Задание 1

Ας υποθέσουμε ότι τα προϊόντα ανήκουν σε μια συγκεκριμένη υποκατηγορία, και οι υποκατηγορίες ανήκουν σε μια συγκεκριμένη κατηγορία. Περιγράψτε τη δομή αποθήκευσης.

Задание 2

Γράψτε ένα ερώτημα που θα ανακτά τα προϊόντα, μαζί με τις υποκατηγορίες και τις κατηγορίες τους.

Задание 3

Γράψτε ένα ερώτημα που θα ανακτά τις υποκατηγορίες μαζί με τις κατηγορίες τους.