Consulta Query - buscando dados da mesma tabela

22/11/2005

0

Tenho uma tabela onde busco qual o remetente e o destinatário no mesmo pedido e esse remente e destinatário é cadastrado na mesma tabela de clientes, só que na consulta com query, não estou conseguindo fazer, acontece assim, como eu estou pegando em dois códigos diferentes na mesma tabela, no caso a de clientes qdo coloco pra trazer os dois clientes (CodRem e CodDest) conforme abaixo não dá certo só qdo é um somente os dois não traz nada na consulta.

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

Janete

Responder

Posts

23/11/2005

Janete

acrescentou no from? mas NÃO é pra acrescentar...


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


Responder

23/11/2005

Janete

Agora está dessa forma:

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.


Responder

23/11/2005

Janete

Será que daria algum problema se eu buscar os nomes que quero atraves de um New Field na query buscando em uma table mesmo a tabela de clientes?


Responder

23/11/2005

Emerson Nascimento

olha, ao que parece o problema está na sua tabela de pedidos. certifique-se que os dados estão gravados corretamente nela.

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)´);



Responder

23/11/2005

Siam

Fazendo dois Left Join na tabela de Clientes, o Interbase também repete o mesmo nome p/ rem e dest


Responder

23/11/2005

Emerson Nascimento

claro!!!! acabei de ver aonde está o erro!!!! ô pessoal que não copia do jeito que a gente escreve....

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!!!


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar