Ir para conteúdo

POWERED BY:

Arquivado

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

Hadjacks

JOIN - relacionamento entre tabelas - multiplicidade de registros

Recommended Posts

Ao executar o código até a linha 7, funciona perfeitamente o problema começa quando entra no join uma tabela que possui id_Obra...

ex já usei a tbl_Material_Equipamento que contém id_Obra ao realizar um join com uma tabela por exemplo tbl_Distribuicao_Orcamento que também contém id_Obra... ele multiplica os registros existentes no banco.

 

 

o problema acredito porque as tabelas abaixo recebem também id_obra... como FK dbo.tbl_Dados_Obra DO, retorna um consulta com múltiplos... ex uma tabela tem 7 registros e a outra tem 6... eles retorna 7 x 6 = 42 registros...Tjoin dbo.tbl_Material_Equipamento

join dbo.tbl_Distribuicao_Orcamento

join dbo.tbl_Projeto

join dbo.tbl_Execucao

join dbo.tbl_Encerramento_Obra

dbo.tbl_Dados_Obra DO

 

 

 

A consulta seria feita dessa forma:

 

1 select * from  dbo.tbl_Dados_Obra DO
2  join dbo.tbl_Tipo_Obra TOB on DO.id_Tipo_Obra = TOB.id_Tipo_Obra
3  join dbo.tbl_Tipo_Equipamento  TE on DO.id_Tipo_Equipamento = TE.id_Tipo_Equipamento
4  join dbo.tbl_Instalacao INST on DO.id_Instalacao = INST.id_Instalacao
5  join dbo.tbl_Tipo_Instalacao  TI on TI.id_Tipo_Instalacao =  INST.id_Tipo_Instalacao 
6  join dbo.tbl_Programa PO on DO.id_Programa = PO.id_Programa
7  join dbo.tbl_Material_Equipamento MA on MA.id_Obra = DO.id_Obra
8  join dbo.tbl_Distribuicao_Orcamento DOR on DOR.id_Obra = DO.id_Obra
9  join dbo.tbl_Projeto PRO on PRO.id_Obra = DO.id_Obra
10 join dbo.tbl_Empreiteira EM on EM.id_Empreiteira = PRO.id_Empreiteira
11 join dbo.tbl_Execucao EX on EX.id_Obra = DO.id_Obra
12 join dbo.tbl_Equipe_Execucao EQ_EX on EQ_EX.id_Equipe_Execucao = EX.id_Equipe_Execucao
13 join dbo.tbl_Orgao_Responsavel_Execucao OR_EX on OR_EX.id_Orgao_Responsavel_Execucao = EX.id_Orgao_Responsavel_Execucao
14 join dbo.tbl_Fabricante FA on FA.id_Fabricante = EX.id_Fabricante
15 join dbo.tbl_Encerramento_Obra EO on EO.id_Obra = DO.id_Obra 

 

quem quiser ver a estrutura do banco está disponível em:

 

http://hospedagemdeimagem.com.br/?di=N58Q

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que entendi não existe problema, o Produto Cartesiano é caracteristica do cruzamento das tabelas.

 

A solução deve ser talvez quebrar este select único em outros com a coesão maior dos dados.

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.