Začněte nyníZačněte zdarma

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

Zobrazit kurz

Pokyny k cvičení

  • Ulož alias tabulky employees jako managers. K tomu aplikuj metodu .alias() na employees.
  • 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í label pojmenuj sloupec name z tabulky employees jako 'employee'.
  • Přidej k příkazu stmt klauzuli where, která propojí sloupec id tabulky managers se sloupcem mgr tabulky employees.
  • Seřaď výsledky podle sloupce name tabulky managers.
  • 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)

Upravit a spustit kód