Compartilhar via


Como: Criar Self-Joins manualmente

Você pode unir uma tabela a mesma mesmo que a tabela não tem um Relação reflexivo no banco de dados.Por exemplo, você pode usar um autojunção para localizar pares de autores morando na mesma cidade.

sistema autônomo com qualquer unir, uma autojunção requer pelo menos duas tabelas.A diferença é que, em vez de adicionar uma segunda tabela à consulta, você adiciona uma segunda instância da mesma tabela.Dessa forma, você pode comparar uma coluna na primeira instância de tabela para a mesma coluna na segunda instância, que permite comparar os valores em uma coluna para Outros.The Consulta e View Designer atribui um alias à segunda instância da tabela.

Por exemplo, se você estiver criando um autojunção para localizar todos os pares de autores em Berkeley, você comparar o city coluna na primeira instância da tabela em relação a city coluna na segunda instância. A consulta resultante pode parecer com o seguinte:

   SELECT 
         authors.au_fname, 
         authors.au_lname, 
         authors1.au_fname AS Expr2, 
         authors1.au_lname AS Expr3
      FROM 
         authors 
            INNER JOIN
            authors authors1 
               ON authors.city 
                = authors1.city
      WHERE
         authors.city = 'Berkeley'

Criando um autojunção normalmente requer a várias condições de unir.Para entender o porquê, considere o resultado da consulta anterior:

   Cheryl Carson       Cheryl Carson
   Abraham Bennet      Abraham Bennet
   Cheryl Carson       Abraham Bennet
   Abraham Bennet      Cheryl Carson

A primeira linha é inútil; ela indica que Cheryl Carson reside na mesma cidade sistema autônomo Cheryl Carson.A segunda linha é igualmente inútil.Para eliminar dados inúteis, você adicionar outra condição mantendo apenas as linhas de resultado no qual os nomes de dois autor descrevem autores diferentes.A consulta resultante pode parecer com isso:

   SELECT 
         authors.au_fname, 
         authors.au_lname, 
         authors1.au_fname AS Expr2, 
         authors1.au_lname AS Expr3
      FROM 
         authors 
            INNER JOIN
            authors authors1 
               ON authors.city 
                = authors1.city
               AND authors.au_id
                <> authors1.au_id
      WHERE
         authors.city = 'Berkeley'

O conjunto de resultados é melhor:

   Cheryl Carson       Abraham Bennet
   Abraham Bennet      Cheryl Carson

Mas as linhas dois resultado são redundantes.O primeiro diz que Carson reside na mesma cidade que Bennet, e a segunda diz que o Bennet reside na mesma cidade que Carson.Para eliminar essa redundância, você pode alterar o segundo condição de junção de "igual não a" para "menor que". A consulta resultante pode parecer com isso:

   SELECT 
         authors.au_fname, 
         authors.au_lname, 
         authors1.au_fname AS Expr2, 
         authors1.au_lname AS Expr3
      FROM 
         authors 
            INNER JOIN
            authors authors1 
               ON authors.city 
                = authors1.city
               AND authors.au_id
                < authors1.au_id
      WHERE
         authors.city = 'Berkeley'

E o conjunto de resultados tem esta aparência:

   Cheryl Carson       Abraham Bennet
Observação:

As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritas na Ajuda, dependendo das configurações ativas ou configurações de edição.Para alterar as configurações, escolher Importar e exportar configurações on the Ferramentas menu.Para obter mais informações, consulte Configurações do Visual Studio.

Para criar uma auto-unir manualmente

  1. Adicione ao painel do diagrama da tabela ou objeto com valor de tabela que você deseja trabalhar com.

  2. Adicione a mesma tabela novamente, para que o painel do diagrama mostra a mesma tabela ou objeto table valued duas vezes dentro do painel do diagrama.

    O consulta e View Designer atribui um alias à segunda instância adicionando um número seqüencial ao nome da tabela.Além disso, o consulta e View Designer cria uma linha de unir entre duas ocorrências da tabela ou objeto table valued dentro do painel do diagrama.

  3. clicar com o botão direito do mouse na linha de unir e escolher Propriedades no menu de atalho.

  4. Na janela Propriedades clicar condição de unir e tipo e clicar no reticências (…) à direita da propriedade.

  5. Na caixa de diálogo Associar altere o operador de comparação entre sistema autônomo chaves primárias conforme necessário.Por exemplo, você pode alterar o operador a menos que (&lt;).

  6. Criar a condição de unir adicional (por exemplo, autores.zip = autores1.zip) arrastando o nome da coluna de unir primária na primeira ocorrência da tabela ou objeto com valor de tabela e soltando-a na coluna correspondente na segunda ocorrência.

  7. Especifique outras opções para a consulta, sistema autônomo colunas de saída, critérios de Pesquisar e a ordem de classificar.

Consulte também

Tarefas

Como: Criar Self-Joins automaticamente

Outros recursos

Consultas com associações