Використання псевдоніма для обробки запитів із приєднанням тієї самої таблиці
Часто у вас будуть таблиці з ієрархічними даними, наприклад співробітники
і менеджери, які також є співробітниками. Тому інколи потрібно приєднати таблицю до самої себе за різними стовпцями. Метод .alias(), який створює копію таблиці, допомагає
це зробити. Оскільки це одна й та сама таблиця, достатньо додати where-умову, щоб указати
умову приєднання.
Тут ви використаєте метод .alias(), щоб побудувати запит і приєднати таблицю
employees до самої себе, аби визначити, кому хто підзвітний.
Ця вправа є частиною курсу
Вступ до баз даних у Python
Інструкції до вправи
- Збережіть псевдонім таблиці
employeesякmanagers. Для цього застосуйте метод.alias()доemployees. - Побудуйте запит, щоб вибрати
nameспівробітника таnameйого менеджера.nameменеджера вже вибрано за вас. Використайтеlabel, щоб позначити стовпецьnameтаблиціemployeesяк'employee'. - Додайте до
stmtwhere-умову, щоб зіставити, де стовпець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)