Байланышкан таблицалардын тизмеси
Эми колдонуучулар белгилүү бир шаарларда жашасын, ал эми бул шаарлар ар кайсы өлкөлөрдө жайгашсын. Ушундай учурда сактоо үчүн бизге үч таблица керек болот: колдонуучулар шаарлар менен байланышкан болот, шаарлар болсо өлкөлөр менен байланышкан болот. Бул учурда бизге колдонуучуларды өлкөлөр менен байланыштыруучу талаа керек болбойт - анткени колдонуучулар шаарлар менен өлкөлөрдүн ортосундагы байланыш аркылуу өзүнчө өлкөлөр менен байланышкан болот.
Келгиле, биздин таблицаларды карап көрөлү. Өлкөлөр таблицасы:
| id | name |
|---|---|
| 1 | country1 |
| 2 | country2 |
Шаарлар таблицасы:
| id | name | country_id |
|---|---|---|
| 1 | city1 | 1 |
| 2 | city2 | 1 |
| 3 | city3 | 2 |
Колдонуучулар таблицасы өзгөрбөй калат:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Сурамдар
Колдонуучуларды алардын шаарлары жана өлкөлөрү менен чогултуп алуу үчүн, биз эки кошулуу (join) жасашыбыз керек болот: биринчиси шаарларды колдонуучуларга кошот, экинчиси болсо өлкөлөрдү шаарларга кошот:
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
Практикалык тапшырмалар
Болсун, товарлар белгилүү бир субкатегорияга таандык, ал эми субкатегориялар белгилүү бир категорияга таандык. Сактоо структурасын жазыңыз.
Товарларды, анын субкатегориялары жана категориялары менен чогултуп алуучу сурамды жазыңыз.
Субкатегорияларды анын категориялары менен чогултуп алуучу сурамды жазыңыз.