Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gelinski

Falha na criação de visualização

Recommended Posts

Olá, pessoal!

 

Estou com um problema na criação de visualização no SQL Server (view). Tenho uma consulta já determinada, está funcionando se fizer à parte, mas se tento trazer a mesma para dentro da view, ela dá erro.

 

A consulta é a seguinte:

select * from Pessoa join Enderecos E1 on Pessoa.endPrincipal = E1.idEndereco

join Enderecos E2 on Pessoa.endSecundario = E2.idEndereco

join PessoaJuridica PJ on PJ.Pessoa_idPessoa = Pessoa.idPessoa

join EmpresaLocal on EmpresaLocal.PessoaJuridica_idPessoaJuridica = PJ.idPessoaJuridica

go

 

E a visualização deveria ser criada no seguinte sintaxe:

create view vw_EmpresaLocal as

select * from Pessoa join Enderecos E1 on Pessoa.endPrincipal = E1.idEndereco

join Enderecos E2 on Pessoa.endSecundario = E2.idEndereco

join PessoaJuridica PJ on PJ.Pessoa_idPessoa = Pessoa.idPessoa

join EmpresaLocal on EmpresaLocal.PessoaJuridica_idPessoaJuridica = PJ.idPessoaJuridica

go

 

Quando consulto usando a SELECT primeiramente mencionada, retorna todos os dados referentes às tabelas relacionadas. Mas quando tento passar para a visualização, retorna o seguinte erro:

 

Msg 4506, Level 16, State 1, Procedure vw_EmpresaLocal, Line 2

Column names in each view or function must be unique. Column name 'idEndereco' in view or function 'vw_EmpresaLocal' is specified more than once.

 

O que pode estar ocorrendo?

Já matando a dúvida, sim, outras visualizações já foram criadas com a mesma ideia, uma por exemplo está assim:

create view vw_Fabricantes as select * from Pessoa join Enderecos on Pessoa.endPrincipal = Enderecos.idEndereco join PessoaJuridica on PessoaJuridica.Pessoa_idPessoa = Pessoa.idPessoa join Fabricantes on Fabricantes.PessoaJuridica_idPessoaJuridica = PessoaJuridica.idPessoaJuridica

go

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gelinski ,

 

bem vindo ao fórum!

 

Seguinte, este campo idEndereco deve ter em mais de uma tabela, por isso o erro.

Em uma criacao de views, sugiro trazer somente os campos que precisa ao invés de um select *.

 

Tente colocar os campos que precisa e veja se o erro persiste.

Não se esqueça de utilizar os alias das respectivas tabelas.

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi a consulta que está fazendo.

Estou sem uma base aqui para testar mais tenta fazer dessa forma:

 

ALTER VIEW vw_EmpresaLocal
select * 
 from Pessoa, Enderecos E1, Enderecos E2, PessoaJuridica PJ, EmpresaLocal
WHERE Pessoa.endPrincipal = E1.idEndereco
  AND Pessoa.endSecundario = E2.idEndereco
  AND PJ.Pessoa_idPessoa = Pessoa.idPessoa
  AND EmpresaLocal.PessoaJuridica_idPessoaJuridica = PJ.idPessoaJuridica

 

Atenciosamente

Felipe Filho

Skype: felipe.calixto

Mobile: + 55 34 9198 9984

Site: sawicontroladoria.tk

Blog: sawiblog.sytes.net

Compartilhar este post


Link para o post
Compartilhar em outros sites
<br />Entendi a consulta que está fazendo.<br />Estou sem uma base aqui para testar mais tenta fazer dessa forma:<br /><br />
<br />
ALTER VIEW vw_EmpresaLocal<br />
select * <br />
  from Pessoa, Enderecos E1, Enderecos E2, PessoaJuridica PJ, EmpresaLocal<br />
WHERE Pessoa.endPrincipal = E1.idEndereco<br />
   AND Pessoa.endSecundario = E2.idEndereco<br />
   AND PJ.Pessoa_idPessoa = Pessoa.idPessoa<br />
   AND EmpresaLocal.PessoaJuridica_idPessoaJuridica = PJ.idPessoaJuridica<br />

<br /><br />Atenciosamente<br />Felipe Filho<br />Skype: felipe.calixto<br />Mobile: + 55 34 9198 9984<br />   Site: sawicontroladoria.tk<br />  Blog: sawiblog.sytes.net<br />

<br /><br /><br />

 

sawicontroladoria,

 

creio que mesmo deste modo o erro persistiria.

Note que o erro se dá na coluna 'idEndereco', pois ele utiliza a tabela Enderecos em duas situacoes (dois alias) E1 e E2.

 

Erro em Inglês:

Msg 4506, Level 16, State 1, Procedure vw_EmpresaLocal, Line 2

Column names in each view or function must be unique. Column name 'idEndereco' in view or function 'vw_EmpresaLocal' is specified more than once.

 

Tradução livre:

Os nomes de colunas em cada exibição ou função deve ser exclusivo. Nome da coluna 'idEndereco' em vista ou 'vw_EmpresaLocal' função é especificado mais de uma vez.

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.