Zinxhira e tabelave të lidhura

Le të supozojmë tani që përdoruesit jetojnë në qytete të caktuara, ndërsa këto qytete ndodhen në vende të ndryshme. Në këtë rast, për ruajtjen do të na duhen tri tabela: përdoruesit do të lidhen me qytetet, ndërsa qytetet - me vendet. Në këtë rast nuk do të na duhet fusha e lidhjes së përdoruesve me vendet - sepse përdoruesit do të lidhen me vendet nëpërmjet lidhjes së qyteteve dhe vendeve.

Le të shohim tabelat tona. Tabela me vendet:

countries
id name
1 country1
2 country2

Tabela me qytetet:

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

Tabela me përdoruesit do të mbetet e pandryshuar:

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

Kërkesat

Për të nxjerrë përdoruesit së bashku me qytetet dhe vendet e tyre, do të na duhet të bëjmë dy join: i pari do të bashkojë qytetet me përdoruesit, ndërsa i dyti - vendet me qytetet:

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

Detyra praktike

Задание 1

Le të supozojmë që produktet i përkasin një nënkategorie të caktuar, ndërsa nënkategoritë i përkasin një kategorie të caktuar. Përshkruani strukturën e ruajtjes.

Задание 2

Shkruani një kërkesë që do të nxjerrë produktet, së bashku me nënkategoritë dhe kategoritë e tyre.

Задание 3

Shkruani një kërkesë që do të nxjerrë nënkategoritë së bashku me kategoritë e tyre.