Linkitettyjen taulukoiden ketju Pythonissa
Oletetaan nyt, että käyttäjät asuvat tietyissä kaupungeissa, ja nämä kaupungit sijaitsevat eri maissa. Tässä tapauksessa tarvitsemme tallentamiseen kolme taulukkoa: käyttäjät linkitetään kaupunkeihin, ja kaupungit linkitetään maihin. Samalla emme tarvitse kenttää, joka linkittää käyttäjiä maihin - koska käyttäjät linkittyvät maihin kaupunkien ja maiden kautta.
Katsotaan taulukoitamme. Taulukko maista:
| id | name |
|---|---|
| 1 | country1 |
| 2 | country2 |
Taulukko kaupungeista:
| id | name | country_id |
|---|---|---|
| 1 | city1 | 1 |
| 2 | city2 | 1 |
| 3 | city3 | 2 |
Taulukko käyttäjistä pysyy muuttumattomana:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Kyselyt
Jotta voimme hakea käyttäjät yhdessä heidän kaupunkinsa ja maittensa kanssa, meidän on tehtävä kaksi liitosta: ensimmäinen liittää kaupungit käyttäjiin, ja toinen liittää maat kaupunkeihin:
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
Käytännön tehtävät
Oletetaan, että tuotteet kuuluvat tiettyyn alikategoriaan, ja alikategoriat kuuluvat tiettyyn kategoriaan. Kuvaile tallennusrakenne.
Kirjoita kysely, joka hakee tuotteet, yhdessä niiden alikategorioiden ja kategorioiden kanssa.
Kirjoita kysely, joka hakee alikategoriat yhdessä niiden kategorioiden kanssa.