Jointures
Si vous ne sélectionnez pas de colonnes dans les deux tables ou si les deux tables n’ont pas de relation définie, vous pouvez tout de même utiliser la méthode .join() sur une table pour la joindre à une autre et obtenir des
informations supplémentaires liées à votre requête. La fonction join() prend en premier argument l’objet table à joindre et, en second argument, une condition qui
indique comment les tables sont liées. Enfin,
vous utilisez la méthode .select_from() sur l’instruction select pour encapsuler la clause de jointure.
Par exemple, dans la vidéo, Jason a exécuté le code suivant pour joindre la table census à la table state_fact de sorte que la colonne state de la table census corresponde à la colonne name de la table state_fact.
stmt = stmt.select_from(
census.join(
state_fact, census.columns.state ==
state_fact.columns.name)
Cet exercice fait partie du cours
Introduction aux bases de données en Python
Instructions
- Construisez une instruction pour sélectionner TOUTES les colonnes des tables
censusetstate_fact. Pour sélectionner TOUTES les colonnes de deux tablesemployeesetsales, par exemple, vous utiliseriezstmt = select([employees, sales]). - Ajoutez un
select_fromàstmtpour joindre la tablecensusà la tablestate_factvia la colonnestatedecensuset la colonnenamede la tablestate_fact. - Exécutez l’instruction pour obtenir le premier résultat et enregistrez-le dans
result. Ce code est déjà fourni. - Soumettez la réponse pour itérer sur les clés de l’objet résultat, et afficher pour chacune la clé et sa valeur !
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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))