Joins
Wenn du nicht aus beiden Tabellen Spalten auswählst oder die beiden Tabellen keine definierte Beziehung haben, kannst du trotzdem die Methode .join() auf einer Tabelle verwenden, um sie mit einer anderen Tabelle zu verbinden und zusätzliche Daten zu deiner Abfrage zu erhalten. join() nimmt als erstes Argument das Tabellenobjekt, das du verknüpfen möchtest, und als zweites Argument eine Bedingung, die angibt, wie die Tabellen zusammenhängen. Anschließend verwendest du die Methode .select_from() auf dem Select-Statement, um die Join-Klausel zu kapseln. Im Video hat Jason zum Beispiel den folgenden Code ausgeführt, um die Tabelle census mit der Tabelle state_fact so zu verbinden, dass die Spalte state der Tabelle census der Spalte name der Tabelle state_fact entspricht.
stmt = stmt.select_from(
census.join(
state_fact, census.columns.state ==
state_fact.columns.name)
Diese Übung ist Teil des Kurses
Einführung in Datenbanken mit Python
Anleitung zur Übung
- Erstelle ein Statement, das ALLE Spalten aus den Tabellen
censusundstate_factauswählt. Um zum Beispiel ALLE Spalten aus zwei Tabellenemployeesundsalesauszuwählen, würdest dustmt = select([employees, sales])verwenden. - Hänge ein
select_fromanstmtan, um die Tabellecensusüber die Spaltestateincensusmit der Tabellestate_factüber die Spaltenamezu verknüpfen. - Führe das Statement aus, um das erste Ergebnis zu erhalten, und speichere es als
result. Dieser Code ist bereits geschrieben. - Sende die Antwort, um über die Schlüssel des Ergebnisobjekts zu iterieren und für jeden Schlüssel das Schlüsselfeld und den Wert auszugeben!
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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))