Złączenia (joins)
Jeśli nie wybierasz kolumn z obu tabel jednocześnie lub między tabelami nie ma zdefiniowanej relacji, nadal możesz użyć metody .join() na tabeli, aby połączyć ją z inną tabelą i uzyskać dodatkowe dane potrzebne w zapytaniu. Metoda join() przyjmuje jako pierwszy argument obiekt tabeli, którą chcesz dołączyć, a jako drugi – warunek określający, jak tabele są ze sobą powiązane. Na końcu używasz metody .select_from() na instrukcji select, aby opakować klauzulę złączenia. Na przykład w filmie Jason wykonał poniższy kod, aby złączyć tabelę census z tabelą state_fact tak, by kolumna state tabeli census odpowiadała kolumnie name tabeli state_fact.
stmt = stmt.select_from(
census.join(
state_fact, census.columns.state ==
state_fact.columns.name)
To ćwiczenie jest częścią kursu
Wprowadzenie do baz danych w Pythonie
Instrukcje do ćwiczenia
- Zbuduj instrukcję, która wybiera WSZYSTKIE kolumny z tabel
censusistate_fact. Aby na przykład wybrać WSZYSTKIE kolumny z tabelemployeesisales, użyjstmt = select([employees, sales]). - Dołącz
select_fromdostmt, aby złączyć tabelęcensusz tabeląstate_factpo kolumniestatew tabelicensusi kolumnienamew tabelistate_fact. - Wykonaj instrukcję, aby pobrać pierwszy wynik i zapisz go jako
result. Ten kod jest już napisany. - Prześlij odpowiedź, aby przejść przez klucze obiektu
resulti wyświetlić każdy klucz wraz z jego wartością!
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Build a statement to select the census and state_fact tables: stmt
stmt = select([____, ____])
# Add a select_from clause that wraps a join for the census and state_fact
# tables where the census state column and state_fact name column match
stmt_join = stmt.select_from(
____(____, census.columns.____ == state_fact.columns.____))
# Execute the statement and get the first result: result
result = connection.execute(stmt_join).first()
# Loop over the keys in the result object and print the key and value
for key in result.keys():
print(key, getattr(result, key))