Joins
Als je geen kolommen uit beide tabellen selecteert of als de twee tabellen geen gedefinieerde relatie hebben, kun je nog steeds de methode .join() op een tabel gebruiken om deze met een andere tabel te joinen en extra gegevens op te halen die bij je query horen. join() neemt het tabelobject dat je wilt joinen als eerste argument en een voorwaarde die aangeeft hoe de tabellen gerelateerd zijn als tweede argument. Tot slot gebruik je de methode .select_from() op de select-statement om de joinclausule te omhullen. In de video voerde Jason bijvoorbeeld de volgende code uit om de tabel census te joinen met de tabel state_fact, zodat de kolom state van de tabel census overeenkwam met de kolom name van de tabel state_fact.
stmt = stmt.select_from(
census.join(
state_fact, census.columns.state ==
state_fact.columns.name)
Deze oefening maakt deel uit van de cursus
Introductie tot databases in Python
Oefeninstructies
- Bouw een statement om ALLE kolommen uit de tabellen
censusenstate_factte selecteren. Om bijvoorbeeld ALLE kolommen uit twee tabellenemployeesensaleste selecteren, zou jestmt = select([employees, sales])gebruiken. - Voeg een
select_fromtoe aanstmtom de tabelcensuste joinen met de tabelstate_factvia de kolomstateincensusen de kolomnamein de tabelstate_fact. - Voer het statement uit om het eerste resultaat op te halen en sla dit op als
result. Deze code is al geschreven. - Verstuur het antwoord om over de keys van het result-object te loopen en voor elke key de key en value te printen!
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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))