erro ao cria uma view postgres

PostgreSQL

29/12/2014

CREATE
	VIEW public.VIEW_SPED_C370
	AS
	(
	select 
		nd.ID_NF_CABECALHO AS ID_NF_CABECALHO,
		nc.DATA_EMISSAO AS DATA_EMISSAO,
		nd.ID_PRODUTO AS ID_PRODUTO,
		nd.ITEM AS ITEM,
		p.ID_UNIDADE_PRODUTO AS ID_UNIDADE_PRODUTO,
		nd.QUANTIDADE AS QUANTIDADE,
		nd.VALOR_TOTAL AS VALOR_TOTAL,
		nd.CST AS CST,
		nd.DESCONTO AS DESCONTO
	from 
		((ecf_nota_fiscal_detalhe nd JOIN ecf_nota_fiscal_cabecalho nc) JOIN produto p)
	where 
		((nd.ID_NF_CABECALHO = nc.ID) AND (nd.ID_PRODUTO = p.ID))
	)
John Lima

John Lima

Curtidas 0

Respostas

Ronaldo Lanhellas

Ronaldo Lanhellas

29/12/2014

Poste o erro.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

29/12/2014

Qual é o erro que está ocorrendo?
GOSTEI 0
John Lima

John Lima

29/12/2014

ERRO: erro de sintaxe em ou próximo a ")"
LINE 16: ...iscal_detalhe nd JOIN ecf_nota_fiscal_cabecalho nc) JOIN pro...
^

********** Error **********

ERRO: erro de sintaxe em ou próximo a ")"
SQL state: 42601
Character: 477
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

29/12/2014

O JOIN entre as tabelas não estão corretos...
create
	view public.VIEW_SPED_C370
	as
	(
	select nd.ID_NF_CABECALHO AS ID_NF_CABECALHO,
		nc.DATA_EMISSAO AS DATA_EMISSAO,
		nd.ID_PRODUTO AS ID_PRODUTO,
		nd.ITEM AS ITEM,
		p.ID_UNIDADE_PRODUTO AS ID_UNIDADE_PRODUTO,
		nd.QUANTIDADE AS QUANTIDADE,
		nd.VALOR_TOTAL AS VALOR_TOTAL,
		nd.CST AS CST,
		nd.DESCONTO AS DESCONTO
	from ecf_nota_fiscal_detalhe nd
     join ecf_nota_fiscal_cabecalho nc
     on   nd.ID_NF_CABECALHO = nc.ID 
     join produto p
     on nd.ID_PRODUTO = p.ID
	)
GOSTEI 0
Jair N.

Jair N.

29/12/2014

Bom Dia veja os relacionamentos aninhados, está faltando "ON" nos dois relacionamentos "JOIN" e não entendi o porque ao criar a VIEW você a colocou entre "parenteses" !
GOSTEI 0
John Lima

John Lima

29/12/2014

Jair eu realmente uso sempre mais o on em vez da clausula where, porem quando em tenho mais de uma condição eu uso o where.
GOSTEI 0
John Lima

John Lima

29/12/2014

Mariziana também costumo usar dessa forma, porem o schema foi passado pelo professor que também foi pego na sefaz, olha todo a documentação vejo que as tabelas tanto da NFE e SPED não tem relacionamento.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

29/12/2014

Você quer dizer que não existe Foreign Key entre as tabelas?
GOSTEI 0
John Lima

John Lima

29/12/2014

isso não existir chaves estrageiras entre as tabelas de venda e produto, para poder funcionar e eu manda o trabalho eu adcioneis as contrains e criei a view dessa forma :

CREATE OR REPLACE VIEW view_sped_c370 AS 
 SELECT nd.id_nf_cabecalho, 
    nc.data_emissao, 
    nd.id_produto, 
    nd.item, 
    p.id_unidade_produto, 
    nd.quantidade, 
    nd.valor_total, 
    nd.cst, 
    nd.desconto
   FROM ecf_nota_fiscal_detalhe nd
   JOIN ecf_nota_fiscal_cabecalho nc ON nd.id_nf_cabecalho = nc.id
   JOIN produto p ON nd.id_produto = p.id;


eu uso esse procedimento em tabelas de consultas pois como a tabela é muito grande acaba deixando a busca lenta ao abri o registro ex:

NCM e CEP
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

29/12/2014

Isso é um trabalho de faculdade?
GOSTEI 0
John Lima

John Lima

29/12/2014

do IFIS o professor pediu que sugerir um tema e optamos para implementação do SPED, porem ha ideia é colocar pra funcionar, só que não concordo com muita coisa que foi definido pelo gorveno
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

29/12/2014

Mesmo assim não entendo porque não existia uma ligação entre as tabelas.
O SPED fiscal é alimentado com os dados da base do cliente e o arquivo deve ter a estrutura que o governo solicita, mas isso não interfere na estrutura do banco de dados.
GOSTEI 0
John Lima

John Lima

29/12/2014

Realmente concordo com você eu no meu banco adicionei a ligação pois o mesmo não tinha e modifiquei o modelo da view.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

29/12/2014

Sem querer ser chata em perguntar....
Você não concorda com o que? Poderia citar um exemplo?
GOSTEI 0
Jair N.

Jair N.

29/12/2014

Boa Tarde, mesmo assim sem a cláusula "ON" após os "JOIN" não vai funcionar, a não ser que seja "NATURAL JOIN" neste caso o banco usa a "foreign key" como relacional com "WHERE" remova os "JOINS" . mesmo com tipo de relacionamentos aninhados é necessário identificar "o que relaciona com quem"!
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

29/12/2014

Bem lembrado Jair!
GOSTEI 0
John Lima

John Lima

29/12/2014

Marisiana fiz uma pesquisa a fundo sobre a modelagem e cheguei a seguinte conclusão, as tabelas que pertencem ao ecf, são do tipo OLAP elas iram receber dados dos terminais e serviram apenas para consultas,já no banco referente a frente de caixa elas possuem seus relacionamentos perfeitamente.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

29/12/2014

Sabia que existia uma boa justificativa!
Por não existir relacionamentos entre as tabelas, pode ser um banco NoSQL...
GOSTEI 0
John Lima

John Lima

29/12/2014

No primeiro momento também achei estranho, mais ao analisar sprint backlog entendi o porque ter feito dessa maneira
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

29/12/2014

Esse tipo de banco de dados é utilizado para análise de dados com o objetivo de gerar informações que auxiliem nas tomadas de decisões.
GOSTEI 0
POSTAR