Боглашган jадваллар зanjири

Энди фарз қилайлик, фойдаланувчилар маълум шахарларда яшасин, бу шахарлар эса турли мамлакатларда жойлашган. Бундай ҳолатда сақлаш учун бизга учта jадвал керак бўлади: фойдаланувчилар шахарлар билан богланади, шахарлар эса мамлакатлар билан. Бунда бизга фойдаланувчиларни мамлакатлар билан боглаш учун алохида майdon керак бўлмайди - чунки фойдаланувчилар шахарлар ва мамлакатлар орқали аллақачон мамлакатлар билан богланиб бўлинади.

Келинг, бизнинг jадвалларимизга назар солайлик. Мамлакатлар jадвали:

countries
id name
1 country1
2 country2

Шахарлар jадвали:

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

Фойдаланувчилар jадвали ўзгармас қолади:

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

Сўровлар

Фойдаланувчиларни уларнинг шахарлари ва мамлакатлари билан бирга олиш учун, бизга иккита join амалиётини бажариш керак бўлади: биринчиси фойдаланувчиларга шахарларни қўшади, иккинчиси эса шахарларга мамлакатларни қўшади:

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

Амалий вазифалар

Задание 1

Фарз қилайлик, махсулотлар маълум бўлимчага тегишли, бўлимчалар эса маълум туркумга тегишли. Сақлаш тузилмасини ёзиб чиқинг.

Задание 2

Махсулотларни, уларнинг бўлимчалари ва туркумлари билан бирга олувчи сўров ёзинг.

Задание 3

Бўлимчаларни уларнинг туркумлари билан бирга олувчи сўров ёзинг.