Partilhar via


Como: Criar auto-associaçõ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.

Como ocorre 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ê adicionar 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, o que lhe 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ê comparar o city coluna na primeira instância da tabela contra a city coluna na segunda instância. A consulta resultante pode parecer da seguinte forma:

   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 ter esta aparência:

   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. A primeira 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 ter esta aparência:

   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çãoObservação

The dialog boxes and menu commands you see might differ from those described in Help depending on your active settings or edition. Para alterar as configurações, escolha Import and Export Settings sobre o Ferramentas menu. For more information, see Trabalhando com configurações.

Para criar uma auto-associação manualmente

  1. Adicione ao painel do diagrama da tabela ou um 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 duas ocorrências da tabela ou o 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 a condição de associação e o tipo e clique no reticências (…) à direita da propriedade.

  5. Na caixa de diálogo de associação, altere o operador de comparação entre as chaves primárias, conforme necessário. Por exemplo, você pode alterar o operador a menos 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 table valued e soltando-a na coluna correspondente na segunda ocorrência.

  7. Especifique outras opções para a consulta como, por exemplo, colunas de saída, critérios de pesquisa e a ordem de classificação.

Consulte também

Tarefas

Como: Criar auto-associações automaticamente

Outros recursos

Consultando com associações