Kettingskakel van verwante tabelle

Gestel gebruikers woon nou in sekere stede, en hierdie stede is in verskillende lande geleë. In so 'n geval sal ons reeds drie tabelle nodig hê om op te slaan: gebruikers sal aan stede gekoppel wees, en stede sal aan lande gekoppel wees. Terselfdertyd sal ons nie 'n koppelveld tussen gebruikers en lande nodig hê nie - aangesien gebruikers tog aan lande gekoppel sal wees deur die skakel tussen stede en lande.

Kom ons kyk na ons tabelle. Die tabel met lande:

countries
id name
1 country1
2 country2

Die tabel met stede:

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

Die tabel met gebruikers sal onveranderd bly:

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

Navrae

Om gebruikers saam met hul stede en lande te kry, sal ons twee joins moet doen: die eerste sal stede by gebruikers voeg, en die tweede sal lande by stede voeg:

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

Praktiese take

Задание 1

Gestel produkte behoort aan 'n sekere subkategorie, en subkategorieë behoort aan 'n sekere kategorie. Beskryf die bergingsstruktuur.

Задание 2

Skryf 'n navraag wat die produkte sal kry, saam met hul subkategorieë en kategorieë.

Задание 3

Skryf 'n navraag wat die subkategorieë sal kry saam met hul kategorieë.