ПочатиПочніть безкоштовно

Використання псевдоніма для обробки запитів із приєднанням тієї самої таблиці

Часто у вас будуть таблиці з ієрархічними даними, наприклад співробітники і менеджери, які також є співробітниками. Тому інколи потрібно приєднати таблицю до самої себе за різними стовпцями. Метод .alias(), який створює копію таблиці, допомагає це зробити. Оскільки це одна й та сама таблиця, достатньо додати where-умову, щоб указати умову приєднання.

Тут ви використаєте метод .alias(), щоб побудувати запит і приєднати таблицю employees до самої себе, аби визначити, кому хто підзвітний.

Ця вправа є частиною курсу

Вступ до баз даних у Python

Переглянути курс

Інструкції до вправи

  • Збережіть псевдонім таблиці employees як managers. Для цього застосуйте метод .alias() до employees.
  • Побудуйте запит, щоб вибрати name співробітника та name його менеджера. name менеджера вже вибрано за вас. Використайте label, щоб позначити стовпець name таблиці employees як 'employee'.
  • Додайте до stmt where-умову, щоб зіставити, де стовпець id таблиці managers відповідає стовпцю mgr таблиці employees.
  • Впорядкуйте інструкцію за стовпцем name таблиці managers.
  • Виконайте інструкцію та збережіть усі результати. Цей код уже написано. Надішліть відповідь, щоб надрукувати імена менеджерів і всіх їхніх співробітників.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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

Редагувати та запускати код