CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Créez une instruction pour sélectionner TOUTES les colonnes des tables census et state_fact. Pour sélectionner TOUTES les colonnes de deux tables employees et sales, par exemple, vous utiliseriez stmt = select([employees, sales]).
  • Ajoutez un select_from à stmt pour joindre la table census à la table state_fact par la colonne state dans census et la colonne name dans la table state_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))
Modifier et exécuter le code