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
Istruzioni dell'esercizio
- Crea un'istruzione per selezionare TUTTE le colonne dalle tabelle
censusestate_fact. Per selezionare TUTTE le colonne da due tabelle, ad esempioemployeesesales, userestistmt = select([employees, sales]). - Aggiungi un
select_fromastmtper fare il join della tabellacensuscon la tabellastate_factmediante la colonnastateincensuse la colonnanameinstate_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))