Kom igångKom igång gratis

Joins

Även om du inte väljer kolumner från båda tabellerna, eller om de två tabellerna saknar ett definierat samband, kan du ändå använda metoden .join() på en tabell för att jointa den med en annan tabell och få extra data kopplat till din fråga. join() tar tabellobjektet du vill jointa som första argument, och ett villkor som beskriver hur tabellerna är relaterade som andra argument. Slutligen använder du metoden .select_from() på select-satsen för att omsluta join- klausulen. I videon körde Jason till exempel följande kod för att jointa tabellen census med tabellen state_fact, så att kolumnen state i census motsvarade kolumnen name i state_fact.

stmt = stmt.select_from(
    census.join(
        state_fact, census.columns.state == 
        state_fact.columns.name)

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

Introduktion till databaser i Python

Visa kurs

Övningsinstruktioner

  • Bygg en sats för att välja ALLA kolumner från tabellerna census och state_fact. För att välja ALLA kolumner från två tabeller, till exempel employees och sales, skriver du stmt = select([employees, sales]).
  • Lägg till en select_from till stmt för att jointa tabellen census med tabellen state_fact via kolumnen state i census och kolumnen name i state_fact.
  • Exekvera satsen för att hämta det första resultatet och spara det som result. Den koden är redan skriven.
  • Skicka in svaret för att loopa igenom nycklarna i resultatobjektet och skriv ut nyckeln och värdet för var och en!

Interaktiv övning med praktiskt arbete

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

# 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))
Redigera och kör kod