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 quand même utiliser la méthode .join() sur une table pour la joindre à une autre et obtenir des données supplémentaires liées à votre requête. La fonction join() prend comme premier argument l'objet table que vous souhaitez joindre et, comme deuxième argument, une condition qui indique comment les tables sont reliées. Enfin, vous utilisez la méthode .select_from() sur l'instruction select pour englober 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 façon à ce 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)
Cette activité fait partie du cours
Introduction aux bases de données en Python
Instructions de l’exercice
- Créez 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_factpar la colonnestatedanscensuset la colonnenamedans la tablestate_fact. - Exécutez l'instruction pour obtenir le premier résultat et enregistrez-le dans
result. Ce code est déjà écrit. - Soumettez la réponse pour parcourir les clés de l'objet résultat et afficher la clé et la valeur de chacune !
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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))