Kæde af relaterede tabeller i Python
Lad os nu antage, at brugerne bor i bestemte byer, og disse byer ligger i forskellige lande. I så fald vil vi have brug for tre tabeller til opbevaring: brugere vil være relateret til byer, og byer vil være relateret til lande. Vi vil ikke have brug for et felt, der relaterer brugere til lande - for brugerne vil alligevel være relateret til lande gennem relationen mellem byer og lande.
Lad os se på vores tabeller. Tabellen med lande:
| id | name |
|---|---|
| 1 | country1 |
| 2 | country2 |
Tabellen med byer:
| id | name | country_id |
|---|---|---|
| 1 | city1 | 1 |
| 2 | city2 | 1 |
| 3 | city3 | 2 |
Tabellen med brugere forbliver uændret:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Forespørgsler
For at hente brugere sammen med deres byer og lande, bliver vi nødt til at lave to joins: det første vil forbinde byer til brugere, og det andet vil forbinde lande til byer:
SELECT
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
Praktiske opgaver
Lad os antage, at produkter tilhører en bestemt underkategori, og underkategorier tilhører en bestemt kategori. Beskriv lagringsstrukturen.
Skriv en forespørgsel, der henter produkter, sammen med deres underkategorier og kategorier.
Skriv en forespørgsel, der henter underkategorier sammen med deres kategorier.