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
Adicione ao painel do diagrama da tabela ou objeto com valor de tabela que você deseja trabalhar.
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.
A linha de associação com o botão direito e escolha Propriedades no menu de atalho.
Na janela Properties clique ingressar condição e tipo e clique no reticências (…) à direita da propriedade.
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 (<).
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.
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