LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

  • Erstelle ein Statement, das ALLE Spalten aus den Tabellen census und state_fact auswählt. Um zum Beispiel ALLE Spalten aus zwei Tabellen employees und sales auszuwählen, würdest du stmt = select([employees, sales]) verwenden.
  • Hänge ein select_from an stmt an, um die Tabelle census über die Spalte state in census mit der Tabelle state_fact über die Spalte name zu 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))
Code bearbeiten und ausführen