Bắt đầu ngayBắt đầu miễn phí

Dùng alias để xử lý truy vấn tự join cùng một bảng

Không ít khi bạn sẽ có các bảng chứa dữ liệu phân cấp, chẳng hạn nhân viên và quản lý — những người cũng là nhân viên. Vì vậy, bạn có thể muốn join một bảng với chính nó trên các cột khác nhau. Phương thức .alias(), tạo ra một bản sao của bảng, sẽ giúp bạn thực hiện nhiệm vụ này. Vì là cùng một bảng, bạn chỉ cần một mệnh đề where để xác định điều kiện join.

Trong bài này, bạn sẽ dùng phương thức .alias() để xây dựng truy vấn join bảng employees với chính nó nhằm xác định mỗi người báo cáo cho ai.

Bài tập này là một phần của khóa học

Nhập môn Cơ sở dữ liệu với Python

Xem khóa học

Hướng dẫn bài tập

  • Lưu một bí danh của bảng employeesmanagers. Thực hiện bằng cách gọi phương thức .alias() trên employees.
  • Xây dựng truy vấn chọn name của nhân viên và name của quản lý của họ. name của quản lý đã được chọn sẵn cho bạn. Dùng label để gán nhãn cột name của employees'employee'.
  • Thêm mệnh đề where vào stmt để khớp nơi cột id của bảng managers tương ứng với cột mgr của bảng employees.
  • Sắp xếp câu lệnh theo cột name của bảng managers.
  • Thực thi câu lệnh và lưu toàn bộ kết quả. Phần mã này đã được viết sẵn. Gửi câu trả lời để in tên các quản lý và tất cả nhân viên của họ.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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)

Chỉnh sửa và Chạy Mã