Saistīto tabulu ķēde Python
Pieņemsim, ka lietotāji dzīvo noteiktās pilsētās, un šīs pilsētas atrodas dažādās valstīs. Šādā gadījumā glabāšanai mums būs nepieciešamas jau trīs tabulas: lietotāji tiks sasaistīti ar pilsētām, bet pilsētas - ar valstīm. Turklāt mums nebūs nepieciešams lauks, kas saistītu lietotājus ar valstīm - jo lietotāji tik un tā tiks sasaistīti ar valstīm caur pilsētu un valstu saistību.
Apskatīsim mūsu tabulas. Tabula ar valstīm:
| id | name |
|---|---|
| 1 | country1 |
| 2 | country2 |
Tabula ar pilsētām:
| id | name | country_id |
|---|---|---|
| 1 | city1 | 1 |
| 2 | city2 | 1 |
| 3 | city3 | 2 |
Tabula ar lietotājiem paliks nemainīga:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Pieprasījumi
Lai iegūtu lietotājus kopā ar viņu pilsētām un valstīm, mums būs jāveic divi join: pirmais pievienos pilsētas lietotājiem, bet otrais - valstis pilsētām:
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
Praktiskie uzdevumi
Pieņemsim, ka produkti pieder noteiktai pakategorijai, un pakategorijas pieder noteiktai kategorijai. Izklāstiet glabāšanas struktūru.
Uzrakstiet vaicājumu, kas iegūs produktus, kopā ar to pakategorijām un kategorijām.
Uzrakstiet vaicājumu, kas iegūs pakategorijas kopā ar to kategorijām.