Zacznij terazZacznij za darmo

Używanie aliasów w zapytaniach z łączeniem tabeli ze sobą

Tabele często zawierają dane hierarchiczne – na przykład pracowników i menedżerów, którzy sami są pracownikami. W takich przypadkach przydatne jest złączenie tabeli z samą sobą, ale po różnych kolumnach. Metoda .alias() tworzy kopię tabeli i umożliwia wykonanie takiego złączenia. Ponieważ operujemy na tej samej tabeli, wystarczy klauzula where określająca warunek złączenia.

W tym ćwiczeniu użyjesz metody .alias(), aby zbudować zapytanie łączące tabelę employees ze sobą i sprawdzić, kto komu podlega.

To ćwiczenie jest częścią kursu

Wprowadzenie do baz danych w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Zapisz alias tabeli employees jako managers. W tym celu wywołaj metodę .alias() na obiekcie employees.
  • Zbuduj zapytanie wybierające imię pracownika i imię jego menedżera. Imię menedżera zostało już dla ciebie wybrane. Użyj label, aby nadać kolumnie name z tabeli employees etykietę 'employee'.
  • Dodaj klauzulę where do zmiennej stmt, która dopasuje wiersze, w których kolumna id tabeli managers odpowiada kolumnie mgr tabeli employees.
  • Posortuj wyniki według kolumny name tabeli managers.
  • Wykonaj zapytanie i zapisz wszystkie wyniki. Ten kod jest już napisany. Prześlij odpowiedź, aby wyświetlić imiona menedżerów i ich pracowników.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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

Edytuj i uruchom kod