Fórum Juntando Tabelas - Como fazer a Syntax #424213

20/09/2012

0

Pessoal BLZ!
Preciso da Ajuda de todos.

Tenho 3 tabelas no meu sistema.

- T_DEV
id
id_controle
valor_dev

---------------
-T_FAT
id
id_controle
valor_fat

----------------
- T_CONTROLE
id
data
nome
nf
valor_nf

Ainda faltam Campos mas para agilizar coloquei apenas os campos que preciso.


Seguinte em cada tabela possuo esses dados:

- T_DEV
id id_Controle valor_dev
1 1 R$ 30,00
2 1 R$ 5,00
3 1 R$ 3,00
4 2 R$ 25,00
5 2 R$ 10,00
6 3 R$ 20,00
7 3 R$ 15,00

---------------------------------
T_DEV
id id_Controle valor_fat
1 1 R$ 5,00
2 1 R$ 15,00
3 2 R$ 12,00
4 3 R$ 20,00
5 3 R$ 15,00

---------------------------------
T_CONTROLE
ID data nome nf valor_nf
1 05/05/2005 teste 123 R$ 50,00
2 05/05/2005 teste 2 333 R$ 55,00
3 05/05/2005 teste 3 555 R$ 60,00

------------------------------------------------------------

Eu preciso juntar essas duas tabelas T_Dev e T_FAT com a t_Controle
Porem tenho alguns impecilios, preciso que apareça os dados de cada tabela mas não repetindo os mesmo dados
nem repetindo o numero da NF da Tabela Controle.

Conforme exemplo abaixo.

Meu select teria que sair exatamente assim:


ID data nome nf valor_nf valor_dev valor_fat
1 05/05/2005 teste 123 R$ 50,00 R$ 30,00 R$ 5,00
1 05/05/2005 teste 123 R$ 5,00 R$ 15,00
1 05/05/2005 teste 123 R$ 3,00
2 05/05/2005 teste 2 333 R$ 55,00 R$ 25,00 R$ 12,00
2 05/05/2005 teste 2 333 R$ 10,00
3 05/05/2005 teste 3 555 R$ 60,00 R$ 20,00 R$ 20,00
3 05/05/2005 teste 3 555 R$ 15,00 R$ 15,00


Alguem pode me ajudar??








Clei Martins

Clei Martins

Responder

Posts

21/09/2012

Claudia Nogueira

Posso estar enganada, mas vejo um problema ao tentar ligar as tabelas t_dev e t_fat já que elas só tem ligação por uma outra tabela chamada t_controle. De qualquer forma irá mostrar 12 registros, pois é uma união horizontal de dados. Fazendo uma única sentença SQL não consigo ver a solução, mas fazendo por dentro do software algum método, aí sim seria possível. Mas como disse anteriormente, posso estar enganada.
Responder

Gostei + 0

21/09/2012

Clei Martins

Oi Claudia,

Eu também cheguei nessa conclusão, mas pensei em postar aqui para saber se alguém tinha alguma luz "rsrsrrs" você falou uma coisa legal DENTRO DO SISTEMA acho que posso tentar algo, vamos ver o que consigo.

Bom se alguém ou Você souber de alguma coisa para ajudar eu agradeço.

Obrigado

Responder

Gostei + 0

21/09/2012

Alisson Santos

poderia postar o select para que possamos verificar o que está passando e auxiliando na duvida?
Responder

Gostei + 0

21/09/2012

Clei Martins

só fazendo uma correção no meu posto eu dupliquei o nome das tabelas.

- T_DEV
id id_Controle valor_dev
1 1 R$ 30,00
2 1 R$ 5,00
3 1 R$ 3,00
4 2 R$ 25,00
5 2 R$ 10,00
6 3 R$ 20,00
7 3 R$ 15,00

---------------------------------
T_FAT
id id_Controle valor_fat
1 1 R$ 5,00
2 1 R$ 15,00
3 2 R$ 12,00
4 3 R$ 20,00
5 3 R$ 15,00

Alisson vamos lá o select que eu tenho para esse resultado :


ID data nome nf valor_nf valor_dev valor_fat
1 05/05/2005 teste 123 R$ 50,00 R$ 30,00 R$ 5,00
1 05/05/2005 teste 123 R$ 5,00 R$ 15,00
1 05/05/2005 teste 123 R$ 3,00
2 05/05/2005 teste 2 333 R$ 55,00 R$ 25,00 R$ 12,00
2 05/05/2005 teste 2 333 R$ 10,00
3 05/05/2005 teste 3 555 R$ 60,00 R$ 20,00 R$ 20,00
3 05/05/2005 teste 3 555 R$ 15,00 R$ 15,00


-
 select t_controle.id,
       t_controle.data,
       t_controle.nome,
       t_controle.nf,
       t_controle.valor_nf,
       t_dev.valor_dev,
       t_fat.valor_fat
       from t_controle
       left join t_dev on t_dev.id_controle = t_controle.id
       left join t_fat on t_fat.id_controle = t_controle.id


Responder

Gostei + 0

03/10/2012

Alex Silva.

CADÊ A CLAUSULA WHERE PRA UNIR REGISTROS DE CODIGOS IGUAIS


WHERE ID_FLAT = ID DA OUTRA TABELA EM QUESTÃO???

PRA ASSOCIAR OS ARQUIVOS;
Responder

Gostei + 0

03/10/2012

Clei Martins

Alex!

Eu já estou unindo as tabelas pelo join

left join t_dev on t_dev.id_controle = t_controle.id
left join t_fat on t_fat.id_controle = t_controle.id

Eu não estou usando o where para unir.
Responder

Gostei + 0

04/10/2012

Alisson Santos

o que ele não está retornando para você de informação, pois pelo que vi está correto.
Responder

Gostei + 0

04/10/2012

Tiago

Seria melhor se você não unisse pela cláusula "WHERE"... Os joins ficariam logo após o FROM.

EXEMPLO:
SELECT COLUNA1,COLUNA2
FROM TABELA [CLAUSULA JOIN]
OUTRA TABELA
ON TABELA.ID=OUTRATABELA.ID

E na clausula where, você colocaria apenas os filtros que deseja.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar