Compartilhar via


Como: criar manualmente de auto-relações

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

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 auto-relações automaticamente

Outros recursos

Consultando com associações