Partilhar via


Como criar autojunções manualmente

Você pode associar uma tabela a mesmo, mesmo se a tabela não tem uma relação reflexiva no banco de dados. Por exemplo, você pode usar uma auto-associação para localizar pares de autores que residam na mesma cidade.

Assim como acontece com qualquer associação, uma auto-associaçã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 da tabela para a mesma coluna na segunda instância, que permite comparar os valores em uma coluna uns aos outros. O Query e View Designer atribui um alias à segunda instância da tabela.

Por exemplo, se você estiver criando uma auto-associação para localizar todos os pares de autores em Berkeley, você compara o city coluna na primeira instância da tabela contra 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 uma auto-associação muitas vezes requer vários critérios de associação. 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. Ele indica que Cheryl Carson reside na mesma cidade que Cheryl Carson. A segunda linha é igualmente inútil. Para eliminar dados inúteis, você pode adicionar outro critério retendo somente aquelas linhas de resultado no qual os dois nomes de autores 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 duas linhas de resultado são redundantes. O primeiro diz que Carson reside na mesma cidade que Bennet, e a segunda diz que Bennet reside na mesma cidade que Carson. Para eliminar essa redundância, você pode alterar a segunda condição de associação de "não iguais" para "less than". 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

Dica

Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Configurações de Visual Studio.

Para criar uma auto-associação manualmente

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

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

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

  3. A linha de associação com o botão direito e escolha Propriedades no menu de atalho.

  4. Na janela Properties clique ingressar condição e tipo e clique no reticências (…) à direita da propriedade.

  5. Na caixa de diálogo associação altere o operador de comparação entre as chaves primárias, conforme necessário. Por exemplo, você pode alterar o operador para menor que (<).

  6. Criar a condição de associação adicional (por exemplo, autores. zip = autores1. zip) arrastando o nome da coluna de associação 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, como colunas de saída, critérios de pesquisa e ordem de classificação.

Consulte também

Tarefas

Como criar autojunções automaticamente

Outros recursos

Consultando com junções