CommencerCommencer 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 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

Afficher le cours

Instructions

  • Construisez 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 via la colonne state de census et la colonne name de la table state_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))
Modifier et exécuter le code