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