Použití aliasu pro dotazy spojující tabulku se sebou samou
Tabulky někdy obsahují hierarchická data – například zaměstnance a jejich manažery, kteří jsou sami také zaměstnanci. V takových případech může být potřeba spojit tabulku se sebou samou na různých sloupcích. Metoda .alias() vytvoří kopii tabulky a tento úkol tak výrazně usnadní. Protože jde o tutéž tabulku, stačí k určení podmínky spojení použít klauzuli where.
V tomto cvičení použiješ metodu .alias() k sestavení dotazu, který spojí tabulku employees se sebou samou – a zjistíš tak, komu každý zaměstnanec podléhá.
Toto cvičení je součástí kurzu
Introduction to Databases in Python
Pokyny k cvičení
- Ulož alias tabulky
employeesjakomanagers. K tomu aplikuj metodu.alias()naemployees. - Sestav dotaz pro výběr jména zaměstnance a jména jeho manažera. Jméno manažera je už vybrané za tebe. Pomocí
labelpojmenuj sloupecnamez tabulkyemployeesjako'employee'. - Přidej k příkazu
stmtklauzuliwhere, která propojí sloupecidtabulkymanagersse sloupcemmgrtabulkyemployees. - Seřaď výsledky podle sloupce
nametabulkymanagers. - Spusť dotaz a ulož všechny výsledky. Tento kód je už napsaný za tebe. Odešli odpověď a zobraz jména manažerů spolu se všemi jejich zaměstnanci.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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)