Pythonда Боглашган Жадваллар Занжири

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

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

countries
id name
1 country1
2 country2

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

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

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

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

Сўровлар

Фойдаланувчиларни уларнинг шаҳарлари ва давлатлари билан бирга олиш учун, bizга иккита 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

Остикатегорияларни уларнинг категориялари билан бирга оладиган сўровни ёзинг.