Python에서 관련 테이블로부터 데이터 가져오기
사용자와 그들의 도시 정보를 모두 가져오는 쿼리를 만들어 봅시다. 이를 위해서는
LEFT JOIN 명령어가 필요합니다:
이 명령어의 구문은 다음과 같습니다:
SELECT 필드들 FROM 테이블_이름
LEFT JOIN 관련_테이블_이름 ON 연결_조건
WHERE 선택_조건
이 명령어 구문의 각 부분을 살펴보겠습니다.
필드
여러 테이블에서 선택을 하기 때문에, *를 통한 모든 필드 선택은
작동하지 않습니다. 다음 쿼리는 주요 테이블의 필드만 선택하고, 관련 테이블의 필드는 선택하지 않습니다:
SELECT *
모든 테이블로부터 데이터를 선택하려면, * 앞에 선택할 테이블 이름을 지정해야 합니다:
SELECT users.*, cities.*
또는 테이블 이름을 앞에 붙여 필요한 필드들을 나열할 수 있습니다:
SELECT users.name, cities.name
이 두 가지 방법에는 문제가 있습니다. 만약 테이블들의 필드 이름이 동일하다면, Python 배열 내에서 이름 충돌이 발생하여 하나의 필드만 남고 두 번째 필드는 사라집니다.
이 문제를 해결하기 위해 충돌하는 이름들은 as 명령어를 통해 이름을 바꿔야 합니다:
SELECT users.name, cities.name as city_name
연결
ON 명령어 뒤에는 두 테이블을 연결하는 데 사용되는 필드들을 지정해야 합니다.
우리의 경우에는 도시 테이블의 id 필드와 사용자 테이블의 city_id 필드가 될 것입니다:
ON cities.id=users.city_id
쿼리
결과적으로, 사용자와 그들의 도시 정보를 함께 가져오는 쿼리는 다음과 같이 될 것입니다:
SELECT
users.name, cities.name as city_name
FROM
users
LEFT JOIN cities ON cities.id=users.city_id
실습 문제
상품 테이블과 그 카테고리 테이블이 있다고 가정합니다. 상품 이름과 그 카테고리를 함께 가져오는 쿼리를 작성하세요.