Kjede av relaterte tabeller i Python
La oss nå anta at brukere bor i bestemte byer, og disse byene ligger i forskjellige land. I dette tilfellet vil vi trenge tre tabeller for lagring: brukere vil være koblet til byer, og byer vil være koblet til land. Vi trenger ikke et felt som kobler brukere direkte til land - for brukere vil likevel være koblet til land gjennom koblingen mellom byer og land.
La oss se på tabellene våre. Tabellen med land:
| id | name |
|---|---|
| 1 | country1 |
| 2 | country2 |
Tabellen med byer:
| id | name | country_id |
|---|---|---|
| 1 | city1 | 1 |
| 2 | city2 | 1 |
| 3 | city3 | 2 |
Tabellen med brukere forblir uendret:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Spørringer
For å hente brukere sammen med deres byer og land, må vi utføre to joins: den første vil koble byer til brukere, og den andre - land 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 oppgaver
Anta at produkter tilhører en bestemt underkategori, og underkategorier tilhører en bestemt kategori. Beskriv lagringsstrukturen.
Skriv en spørring som henter produkter, sammen med deres underkategorier og kategorier.
Skriv en spørring som henter underkategorier sammen med deres kategorier.