시작하기무료로 시작하기

같은 테이블 조인 쿼리에서 alias 사용하기

직원과 관리자가 모두 직원인 것처럼, 계층적 데이터를 담은 테이블을 다뤄야 할 때가 자주 있습니다. 이런 경우 서로 다른 열을 기준으로 테이블을 자기 자신과 조인할 수 있어야 합니다. 테이블의 사본을 만드는 .alias() 메서드는 이 작업에 유용합니다. 같은 테이블을 조인하므로 조인 조건을 지정하는 where 절만 필요합니다.

여기서는 .alias() 메서드를 사용해 employees 테이블을 자기 자신과 조인하여 각 직원이 누구에게 보고하는지 알아내는 쿼리를 작성해 보겠습니다.

이 연습은 강의의 일부입니다

Python으로 배우는 데이터베이스 입문

강의 보기

연습 안내

  • employees 테이블의 별칭을 managers로 저장하세요. 이를 위해 employees.alias() 메서드를 적용하세요.
  • 직원의 name과 해당 관리자의 name을 선택하는 쿼리를 작성하세요. 관리자의 name은 이미 선택되어 있습니다. label을 사용해 employeesname 열에 'employee' 라벨을 지정하세요.
  • stmt에 where 절을 추가하여, managers 테이블의 id 열이 employees 테이블의 mgr 열과 일치하도록 하세요.
  • managers 테이블의 name 열을 기준으로 정렬하세요.
  • 구문을 실행하고 모든 결과를 저장하세요. 이 코드는 이미 작성되어 있습니다. Submit Answer를 눌러 모든 관리자와 그들의 직원 이름을 출력하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Make an alias of the employees table: managers
managers = ____

# Build a query to select names of managers and their employees: stmt
stmt = select(
    [managers.columns.name.label('manager'),
     ____]
)

# Match managers id with employees mgr: stmt_matched
stmt_matched = stmt.where(managers.columns.id == ____)

# Order the statement by the managers name: stmt_ordered
stmt_ordered = stmt_matched.order_by(____)

# Execute statement: results
results = connection.execute(stmt_ordered).fetchall()

# Print records
for record in results:
    print(record)

코드 편집 및 실행