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