GARANTIR DESCONTO

Fórum Ajuda: Access, Join Left #274069

25/03/2005

0

E aí pessoal, beleza?
Então, estou com problemas! Por favor ajudem.
É o seguinte:
Tenho um banco de dados ACCESS! E estou desenvolvendo um sistema em DELPHI 7.
Tenho um tabela F_Pagto, que contém as prestações, os valores dos pedidos. E tenho uma tabela CHEQUES em que eu cadastro os cheques.
Queria fazer uma consulta SQl que retorne todos os campos da tabela F_Pagto e somente os campos correspondentes da tabela Cheques.
Por exemplo, se eu tiver um registro na tabela F_pagto sem correspondência na tabela CHEQUES, eu quero que este registro seja exibido.
Se eu fizer o seguinte código, só são exibidos os registros da tabela F_Pagto que possuem correspondência na tabela CHEQUES.

SELECT *
FROM Orcamentos, F_Pagto, Cheques where F_Pagto.Cod_Orcamento=Cheques.Cod_Orcamento and F_Pagto.Vencimento= Cheques.Vencto_Orcamento
and Orcamentos.orcamento=F_Pagto.cod_orcamento and F_Pagto.Data_Receb is null
ORDER BY F_Pagto.Vencimento;


Neste código, também está relacionada a tabela dos pedido (ORCAMENTOS).

Pesquisei pelo forum e vi que pra fazero que eu quero preciso usar um comando SQL (LEFT JOIN) que eu acho que o ACCESS não suporta. O q vcs acham que eu deveria fazer?Trocar de Banco de Dados ou tem jeito de fazer esta consulta sem usar o LEFT JOIN :?: :?: :!: :!:


Caiosoft

Caiosoft

Responder

Posts

25/03/2005

Raserafim

LEFT JOIN significa todos os registros da tabela do lado esquerdo do relacionamento e somente os correspondentes do lado direito do relacionamento. Isso é exatamente o que vc procura. segue a sua consulta adaptada para o LEFT JOIN:

SELECT * 
FROM F_Pagto LEFT JOIN Cheques ON F_Pagto.Cod_Orcamento = Cheques.Cod_Orcamento and F_Pagto.Vencimento = Cheques.Vencto_Orcamento LEFT JOIN Orcamentos ON F_Pagto.cod_orcamento = Orcamentos.orcamento
where F_Pagto.Data_Receb is null 
ORDER BY F_Pagto.Vencimento;


testa e diz se resolve o problema


Responder

Gostei + 0

26/03/2005

Caiosoft

bom, raserafim valew pela ajuda, mas não funcionou. eu coloquei o código do jeito que vc mostrou,mas não funcionou deu erro de operador faltanto entre os joins, ai eu mechi e consegui relacionar somente duas tabelas, mas tem um campo da tabela que eu não consegui relacionar (Orcamentos) que eu preciso!! Veja como ficou:
SELECT * 
FROM  F_Pagto LEFT JOIN Cheques ON ( F_Pagto.Cod_Orcamento = Cheques.Cod_Orcamento and F_Pagto.Vencimento = Cheques.Vencto_Orcamento ) 
where F_Pagto.Data_Receb is not null 
ORDER BY F_Pagto.Vencimento;
 

Ficou perfeito, mas naum consigo relacionar a tabela Orcamentos, não seu que operador usar (´and´ ´,´) vc sabe como eu faço?


Responder

Gostei + 0

26/03/2005

Raserafim

caio,

é o seguinte: testei aqui com um banco de dados firebird 1.5 simulando a mesma situação que a sua, sendo que com tabelas diferentes e campos diferentes, e funcionou normalmente o código que eu te enviei. Assumi que o código que vc informou na sua pergunta esteja certo, sem mostrar nenhum erro, apenas mostrando o resultado que ainda não lhe serve.
Com o código que vc refêz, colocando LEFT JOIN Orcamentos ON F_Pagto.cod_orcamento = Orcamentos.orcamento após o último parênteses tb é pra dá certo.
Mas se vc tentar novamente e não consegui pode me mandar a base dedados q vc fêz (pelo menos com estas três tabelas) e dizer o método de acesso q vc está usando. meu e-mail é raserafiminfo@bol.com.br

mas a princípio me diz qual erro exatamente dá e onde o cursor fica parado.


Responder

Gostei + 0

28/03/2005

Kotho

tente assim:

SELECT 
  * 
FROM (
  F_Pagto 
  LEFT JOIN  
    Cheques 
      ON F_Pagto.Cod_Orcamento = Cheques.Cod_Orcamento 
      and F_Pagto.Vencimento = Cheques.Vencto_Orcamento  )
  LEFT JOIN 
    Orcamentos 
      ON F_Pagto.cod_orcamento = Orcamentos.orcamento 
where 
  F_Pagto.Data_Receb is null 
ORDER BY 
  F_Pagto.Vencimento; 



Responder

Gostei + 0

28/03/2005

Diogoalles

Veja esse tópico

[url]http://forum.clubedelphi.net/viewtopic.php?t=59908&highlight=[/url]


Responder

Gostei + 0

02/04/2005

Caiosoft

Ohh, valew! Deu certo o último código:
SELECT 
  * 
FROM ( 
  F_Pagto 
  LEFT JOIN  
    Cheques 
      ON F_Pagto.Cod_Orcamento = Cheques.Cod_Orcamento 
      and F_Pagto.Vencimento = Cheques.Vencto_Orcamento  ) 
  LEFT JOIN 
    Orcamentos 
      ON F_Pagto.cod_orcamento = Orcamentos.orcamento 
where 
  F_Pagto.Data_Receb is null 
ORDER BY 
  F_Pagto.Vencimento; 

Valew mesmo!
Já estava pensando em trocar de banco de dados, mas não consegui configurar o firebird, nem criar as tabelas!!
Se eu mudar do ACCESS para o Firebird, eu terei que mudar todo meu sistema em Delphi?? :?: :?: Eu utilizei os componentes Query e DataSource para fazer as ligações entre BD e o sistema.


Responder

Gostei + 0

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

Aceitar