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:
| id | name |
|---|---|
| 1 | country1 |
| 2 | country2 |
Die tabel met stede:
| id | name | country_id |
|---|---|---|
| 1 | city1 | 1 |
| 2 | city2 | 1 |
| 3 | city3 | 2 |
Die tabel met gebruikers sal onveranderd bly:
| 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:
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
Praktiese take
Gestel produkte behoort aan 'n sekere subkategorie, en subkategorieë behoort aan 'n sekere kategorie. Beskryf die bergingsstruktuur.
Skryf 'n navraag wat die produkte sal kry, saam met hul subkategorieë en kategorieë.
Skryf 'n navraag wat die subkategorieë sal kry saam met hul kategorieë.