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
Instrucciones del ejercicio
- Crea una sentencia para seleccionar TODAS las columnas de las tablas
censusystate_fact. Para seleccionar TODAS las columnas de dos tablas, por ejemploemployeesysales, usaríasstmt = select([employees, sales]). - Añade un
select_fromastmtpara unir la tablacensuscon la tablastate_factpor la columnastateencensusy la columnanameen la tablastate_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))