Pythonにおける関連テーブルの連鎖

ここで、ユーザーが特定の都市に住み、それらの都市が異なる国にあるとします。この場合、データを保存するには3つのテーブルが必要になります。ユーザーは都市と関連付けられ、都市は国と関連付けられます。ユーザーと国を直接関連付けるフィールドは必要ありません。なぜなら、ユーザーは都市と国の関連を通じて既に国と関連付けられているからです。

テーブルを見てみましょう。国を表すテーブル:

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

クエリ

ユーザーとその都市、国を一緒に取得するには、2つのJOINを行う必要があります。1つ目は都市をユーザーに結合し、2つ目は国を都市に結合します:

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

サブカテゴリとそのカテゴリを一緒に取得するクエリを書いてください。