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:
| id | name |
|---|---|
| 1 | country1 |
| 2 | country2 |
Tabela me qytetet:
| id | name | country_id |
|---|---|---|
| 1 | city1 | 1 |
| 2 | city2 | 1 |
| 3 | city3 | 2 |
Tabela me përdoruesit do të mbetet e pandryshuar:
| 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:
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
Detyra praktike
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.
Shkruani një kërkesë që do të nxjerrë produktet, së bashku me nënkategoritë dhe kategoritë e tyre.
Shkruani një kërkesë që do të nxjerrë nënkategoritë së bashku me kategoritë e tyre.