Consulta Query - buscando dados da mesma tabela
22/11/2005
0
SQL.Add(´Select pedido .Numero, pedido .DataEmissao,
pedido.CodRem,pedido .CodDest,Clientes.Nome as Rem,Clientes.Nome as Dest´);
SQL.Add(´From pedido ,Clientes´);
SQL.Add(´Where pedido .CodRem=Clientes.Codigo´);
SQL.Add(´and pedido .CodDest=Clientes.Codigo´);
Como resolver essa situação?
Janete
Posts
23/11/2005
Janete
Então não entendi o q vc falou...
´preste atenção na instrução acima: somente a tabela Pedido está na cláusula from. Nenhuma outra.
apesar de você não ter informado qual banco de dados está utilizando, essa sintaxe funciona para a maioria deles.´
Mas testei com From Pedido e com Frm Pedidos,Clientes tb não adiantou
23/11/2005
Janete
SQL.Add(´Select Pedido.Numero, Pedido.DataEmissao,Pedido.CodRem,Pedido.CodDest,Clientes.Nome as Rem,Clientes.Nome as Dest´);
SQL.Add(´From Pedido);
SQL.Add(´left join´);
SQL.Add(´Clientes Rem on (Rem.Codigo = Pedido.CodRem)´);
SQL.Add(´left join´);
SQL.Add(´Clientes Dest on (Dest.Codigo = Pedido.CodDest)´);
e está trazendo a quantidade de registro de pedidos certos mas repete cada remetente no destinatário exemplo:
Numero Data Remetente Destinatário
1 23/11/05 Cliente1 Cliente1
2 23/11/05 Cliente2 Cliente2
e o destinatário á outro cliente não é nem o CLiente1 nem o Clinete2, ele simplesmente repete o remetente para o destinatário.
23/11/2005
Janete
23/11/2005
Emerson Nascimento
quais são os dados exibidos em todas as colunas depois que você abre essa consulta?
Numero | DataEmissao | CodRem | CodDest | Rem | Dest
outra coisa: deixe as últimas colunas com os nomes inteiros (Remetente e Destinatario). talvez o paradox esteja ´se perdendo´ pois você deixou essas colunas com o mesmo apelido dado à tabela clientes.
deixe o nome completo:
SQL.Clear; SQL.Add(´Select Pedido.Numero, Pedido.DataEmissao,Pedido.CodRem,Pedido.CodDest,Clientes.Nome as Remetente,Clientes.Nome as Destinatario´); SQL.Add(´From Pedido); SQL.Add(´left join´); SQL.Add(´Clientes Rem on (Rem.Codigo = Pedido.CodRem)´); SQL.Add(´left join´); SQL.Add(´Clientes Dest on (Dest.Codigo = Pedido.CodDest)´);
23/11/2005
Siam
23/11/2005
Emerson Nascimento
notem que a tabela clientes recebe dois apelidos. é pra usar os apelidos!!!
meu primeiro post:
Select Ped.Numero, Ped.DataEmissao, Ped.CodRem, Rem.Nome Remetente, <--- REM.Nome Ped.CodDest, Dest.Nome Destinatario <--- DEST.Nome From Pedido Ped left join Clientes Rem on (Rem.Codigo = Ped.CodRem) left join Clientes Dest on (Dest.Codigo = Ped.CodDest)
como a Janete colocou:
SQL.Add(´Select Pedido.Numero, Pedido.DataEmissao,Pedido.CodRem,Pedido.CodDest,Clientes.Nome as Rem,Clientes.Nome as Dest´); <-- CLIENTES.Nome ESTÁ ERRADO!!! SQL.Add(´From Pedido); SQL.Add(´left join´); SQL.Add(´Clientes Rem on (Rem.Codigo = Pedido.CodRem)´); SQL.Add(´left join´); SQL.Add(´Clientes Dest on (Dest.Codigo = Pedido.CodDest)´);
[size=18:760ee602bd]O CORRETO:[/size:760ee602bd]
SQL.Clear; SQL.Add(´Select Pedido.Numero, Pedido.DataEmissao,Pedido.CodRem,Pedido.CodDest,Rem.Nome as Remetente,Dest.Nome as Destinatario´); SQL.Add(´From Pedido); SQL.Add(´left join´); SQL.Add(´Clientes Rem on (Rem.Codigo = Pedido.CodRem)´); SQL.Add(´left join´); SQL.Add(´Clientes Dest on (Dest.Codigo = Pedido.CodDest)´);
se tem duas vezes a tabela clientes, mas com apelidos diferentes, é pra ser usado o APELIDO e não o nome da tabela!!!
Clique aqui para fazer login e interagir na Comunidade :)