Python에서 연결된 테이블 체인
이제 사용자들이 특정 도시에 살고, 이 도시들이 다양한 국가에 위치해 있다고 가정해 보겠습니다. 이 경우 저장을 위해서는 세 개의 테이블이 필요할 것입니다: 사용자는 도시와 연결되고, 도시는 국가와 연결될 것입니다. 이때 사용자와 국가를 연결하는 관계 필드는 필요하지 않습니다. 왜냐하면 사용자는 도시와 국가의 연결을 통해 이미 국가와 연결될 것이기 때문입니다.
우리의 테이블들을 살펴보겠습니다. 국가 테이블:
| 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
실습 문제
상품들이 특정 하위 카테고리에 속하고, 하위 카테고리들이 특정 카테고리에 속한다고 가정하겠습니다. 저장 구조를 설명하세요.
상품들을 그들의 하위 카테고리 및 카테고리와 함께 가져오는 쿼리를 작성하세요.
하위 카테고리들을 그들의 카테고리와 함께 가져오는 쿼리를 작성하세요.