Kom igångKom igång gratis

Använda alias för att hantera frågor med samma tabell

Det är vanligt att tabeller innehåller hierarkisk data, till exempel anställda och chefer som också är anställda. Då kan det vara användbart att joina en tabell med sig själv på olika kolumner. Metoden .alias() skapar en kopia av en tabell och gör detta möjligt. Eftersom det är samma tabell räcker det med en where-sats för att ange joinvillkoret.

Här använder du .alias() för att bygga en fråga som joinar tabellen employees med sig själv, för att ta reda på vem alla rapporterar till.

Den här övningen är en del av kursen

Introduktion till databaser i Python

Visa kurs

Övningsinstruktioner

  • Spara ett alias av tabellen employees som managers. Gör det genom att använda metoden .alias()employees.
  • Bygg en fråga som väljer den anställdes name och chefens name. Chefens name är redan valt. Använd label för att märka kolumnen name i employees som 'employee'.
  • Lägg till en where-sats i stmt för att matcha där kolumnen id i tabellen managers motsvarar kolumnen mgr i tabellen employees.
  • Sortera resultatet efter kolumnen name i tabellen managers.
  • Kör frågan och lagra alla resultat. Den koden är redan skriven. Skicka in svaret för att skriva ut namnen på cheferna och alla deras anställda.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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

Redigera och kör kod