Joins
Se você não estiver selecionando colunas de ambas as tabelas ou se as duas tabelas não tiverem um relacionamento definido, ainda assim pode usar o método .join() em uma tabela para juntá-la a outra e obter dados extras relacionados à sua consulta. O join() recebe o objeto de tabela que você quer juntar como primeiro argumento e uma condição que indica como as tabelas se relacionam como segundo argumento. Por fim, você usa o método .select_from() na instrução select para envolver a cláusula de join. Por exemplo, no vídeo, Jason executou o seguinte código para juntar a tabela census à tabela state_fact de modo que a coluna state da tabela census correspondesse à coluna name da tabela state_fact.
stmt = stmt.select_from(
census.join(
state_fact, census.columns.state ==
state_fact.columns.name)
Este exercício faz parte do curso
Introdução a Bancos de Dados em Python
Instruções do exercício
- Construa uma instrução para selecionar TODAS as colunas das tabelas
censusestate_fact. Para selecionar TODAS as colunas de duas tabelasemployeesesales, por exemplo, você usariastmt = select([employees, sales]). - Acrescente um
select_fromastmtpara fazer join da tabelacensuscom a tabelastate_factpela colunastateemcensuse a colunanameemstate_fact. - Execute a instrução para obter o primeiro resultado e salve-o como
result. Esse código já está escrito. - Envie a resposta para iterar sobre as chaves do objeto de resultado e imprimir a chave e o valor de cada uma!
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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))