Reťaz prepojených tabuliek

Predpokladajme, že používatelia žijú v určitých mestách, a tieto mestá sa nachádzajú v rôznych krajinách. V takom prípade na ukladanie budeme potrebovať už tri tabuľky: používatelia budú prepojení s mestami, a mestá - s krajinami. Pritom nebudeme potrebovať pole pre priame prepojenie používateľov s krajinami - pretože používatelia budú tak či tak prepojení s krajinami cez prepojenie miest a krajín.

Pozrime sa na naše tabuľky. Tabuľka s krajinami:

countries
id name
1 country1
2 country2

Tabuľka s mestami:

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

Tabuľka s používateľmi zostane nezmenená:

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

Dopytovanie

Aby sme získali používateľov spolu s ich mestami a krajinami, budeme musieť urobiť dve spojenia (JOIN): prvé pripojí mestá k používateľom, a druhé - krajiny k mestám:

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

Praktické úlohy

Задание 1

Predpokladajme, že produkty patria do určitej podkategórie, a podkategórie patria do určitej kategórie. Opíšte štruktúru ukladania.

Задание 2

Napíšte dopyt, ktorý získa produkty, spolu s ich podkategóriami a kategóriami.

Задание 3

Napíšte dopyt, ktorý získa podkategórie spolu s ich kategóriami.