ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • Construa uma instrução para selecionar TODAS as colunas das tabelas census e state_fact. Para selecionar TODAS as colunas de duas tabelas employees e sales, por exemplo, você usaria stmt = select([employees, sales]).
  • Acrescente um select_from a stmt para fazer join da tabela census com a tabela state_fact pela coluna state em census e a coluna name em state_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))
Editar e executar o código