ComenzarEmpieza gratis

Joins

Si no vas a seleccionar columnas de ambas tablas o las dos tablas no tienen una relación definida, aún puedes usar el método .join() sobre una tabla para unirla con otra y obtener datos extra relacionados con tu consulta. join() recibe como primer argumento el objeto de la tabla que quieres unir y, como segundo argumento, una condición que indica cómo se relacionan las tablas. Por último, usa el método .select_from() sobre el objeto select para envolver la cláusula de la unión. Por ejemplo, en el vídeo, Jason ejecutó el siguiente código para unir la tabla census con la tabla state_fact de manera que la columna state de la tabla census correspondiera con la columna name de la tabla state_fact.

stmt = stmt.select_from(
    census.join(
        state_fact, census.columns.state == 
        state_fact.columns.name)

Este ejercicio forma parte del curso

Introducción a las bases de datos en Python

Ver curso

Instrucciones del ejercicio

  • Crea una sentencia para seleccionar TODAS las columnas de las tablas census y state_fact. Para seleccionar TODAS las columnas de dos tablas, por ejemplo employees y sales, usarías stmt = select([employees, sales]).
  • Añade un select_from a stmt para unir la tabla census con la tabla state_fact por la columna state en census y la columna name en la tabla state_fact.
  • Ejecuta la sentencia para obtener el primer resultado y guárdalo como result. Este código ya está escrito.
  • Envía la respuesta para iterar sobre las claves del objeto resultado e imprimir la clave y el valor de cada una.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# 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))
Editar y ejecutar código