IniziaInizia gratis

Join

Se non stai selezionando colonne da entrambe le tabelle o le due tabelle non hanno una relazione definita, puoi comunque usare il metodo .join() su una tabella per unirla a un'altra e ottenere dati aggiuntivi collegati alla tua query. join() prende come primo argomento l'oggetto tabella che vuoi unire e come secondo argomento una condizione che indica come le tabelle sono correlate. Infine, usa il metodo .select_from() sull'istruzione di select per racchiudere la clausola di join. Ad esempio, nel video, Jason ha eseguito il seguente codice per unire la tabella census alla tabella state_fact in modo che la colonna state di census corrispondesse alla colonna name di state_fact.

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

Questo esercizio fa parte del corso

Introduzione ai database in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Crea un'istruzione per selezionare TUTTE le colonne dalle tabelle census e state_fact. Per selezionare TUTTE le colonne da due tabelle, ad esempio employees e sales, useresti stmt = select([employees, sales]).
  • Aggiungi un select_from a stmt per fare il join della tabella census con la tabella state_fact mediante la colonna state in census e la colonna name in state_fact.
  • Esegui l'istruzione per ottenere il primo risultato e salvalo come result. Questo codice è già scritto.
  • Invia la risposta per iterare sulle chiavi dell'oggetto result e stampare per ciascuna la coppia chiave-valore!

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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))
Modifica ed esegui il codice