Compartilhar via


Usando uma tabela duas vezes em uma consulta

Você pode usar a mesma tabela duas (ou mais) vezes em uma única consulta.Existem várias situações em que você fazer isso.

  • Criando uma auto-unir com um relacionamento reflexivo   Você pode associar uma tabela a mesma usando uma relação reflexiva — uma relação em que as colunas de chave externa faz referência e colunas de chave primária conhecida para estão na mesma tabela.Por exemplo, suponha que a tabela de funcionários contenha uma coluna adicional gerente_funcionário_id_func e que uma chave estrangeira existe de gerente__id_func para funcionário_id_func.Em cada linha da tabela de funcionários, a coluna gerente_id_func indica o chefe do funcionário.Mais precisamente, ele indica a id_func do chefe do funcionário.

    Ao associar a tabela a mesma usando esse relação reflexiva, você pode estabelecer um conjunto no qual cada linha contém o nome do chefe e o nome de um dos funcionários desse chefe de resultados.A SQL resultante pode parecer como este:

    SELECT 
        boss.lname, 
        boss.fname, 
        employee.lname, 
        employee.fname
    FROM 
        employee
            INNER JOIN 
            employee boss 
            ON employee.manager_emp_id 
            =  boss.emp_id
    

    Para obter mais informações sobre como criar associações usando reflexivas relacionamentos, consulte Como: Criar Self-Joins automaticamente.

  • Criando um autojunção sem um Relação reflexivo   Você pode associar uma tabela a mesma sem usar um Relação reflexivo.Por exemplo, você pode estabelecer um conjunto de resultados no qual cada linha descreve um funcionário e um mentor possível para esse funcionário.(Um mentor potencial é um funcionário com um nível maior de trabalho.) A SQL resultante pode parecer como este:

    SELECT 
        employee.fname, 
        employee.lname, 
        mentor.fname, 
        mentor.lname 
    FROM 
        employee 
            INNER JOIN 
            employee mentor 
            ON employee.job_lvl 
            <  mentor.job_lvl
    

    Observe que a unir usa uma condição Outros de igualdade.Para obter mais informações sobre como associar tabelas usando condições Outros de igualdade, ver Operadores de comparação de unir.

    Para obter mais informações sobre como criar self-joins usando colunas não relacionadas, consulte Como: Criar Self-Joins manualmente.

  • Usando uma tabela duas vezes sem uma auto-unir   Mesmo sem uma auto-unir, você pode usar a mesma tabela duas vezes (ou mais) em uma consulta.Por exemplo, você pode estabelecer um conjunto de resultados que contém os outros livros por autor ou autores de seu livro favorito.Nesse caso, use a tabela títuloautores duas vezes — uma vez para localizar os autores do seu livro favorito (É a inimiga raiva?) e uma vez para localizar os outros livros os autores.A SQL resultante pode parecer como este:

    SELECT 
        other_title.title
    FROM 
        titles favorite_title 
            INNER JOIN 
            titleauthor favorite_titleauthor 
            ON favorite_title.title_id 
            =  favorite_titleauthor.title_id 
                INNER JOIN 
                authors 
                ON favorite_titleauthor.au_id 
                =  authors.au_id 
                    INNER JOIN 
                    titleauthor other_titleauthor 
                    ON authors.au_id 
                    =  other_titleauthor.au_id 
                        INNER JOIN 
                        titles other_title 
                        ON other_titleauthor.title_id 
                        =  other_title.title_id 
    WHERE 
        favorite_title.title 
        = 'Is Anger the Enemy?' 
      AND 
        favorite_title.title 
        <> other_title.title 
    
    Observação:

    Para diferenciar várias utilizações de qualquer uma tabela, consulta anterior usa os seguintes aliases: título_favorito , títuloautor_favorito , outros_títuloautor e outros_títulos .Para obter mais informações sobre aliases, consulte Como: Criar aliases de tabela.

Consulte também

Conceitos

Trabalhando com dados no painel de resultados

Outros recursos

Especificando critérios de Pesquisar