AJUDA COM INNER JOIN

SACOFRITO 25/05/2011 11:01:27
#374911
Bom dia amigos.. estou começando a programar usando as varias facilidades do sql..e nunca usei o inner join..e estou com problemas aqui.
Preciso pesquisar dentro de apenas duas tabelas (orcamentos e caixa) os registros de codorc das duas tabelas que esteja sem pagamento efetuado,e com isso preencher um list com itens de uma terceira tabela(detorcamentos) em meu pdv

Eu fiz assim, mas nao retorna nenhum resultado. E ja vi na tabela, esta tudo gravado


  Set dsabre = db.OpenRecordset([Ô]select * from orcamentos as O inner join caixa as C on O.codorc = C.codorc where C.codorc = [Ô] & ORCAMENTO & [Ô] and not isnull(C.pagamento)[Ô], dbOpenDynaset)
If Not dsabre.EOF Then
Set dsenchelista = db.OpenRecordset([Ô]select * from detorcamentos where codorc = [Ô] & dsabre!codorc, dbOpenDynaset)
If Not dsenchelista.EOF Then
[ô] daqui para baixo é p preenchimento.


Alguem pode me dar uma força? nao kero abrir 3 querys, se fosse assim conseguiria facilmente
ASHKATCHUP 25/05/2011 11:11:05
#374916
Você tem um programa de SQL para testar ela?
ACG1574 25/05/2011 11:11:31
#374917
mas, no seu caso nao precisa usar inner join

Set dsabre = db.OpenRecordset([Ô]select * from orcamentos as O, caixa as C where O.codorc = C.codorc where C.codorc = [Ô] & ORCAMENTO & [Ô] and not isnull(C.pagamento)[Ô], dbOpenDynaset)
ASHKATCHUP 25/05/2011 11:13:14
#374918
ACG:

O que você fez foi um INNER JOIN não declarado...
SACOFRITO 25/05/2011 11:15:39
#374920
ACG1574, obrigado pela resposta.
Eu sei que nao precisa, mas estou fazendo em virtude de me adaptar a linguagem sql.
Eu poderia simplesmente ver apenas na tabela caixa.

Mas no trecho do codigo que vc postou existem 2 Where[ô]s
ASHKATCHUP 25/05/2011 11:19:23
#374923

SELECT *
FROM ORCAMENTOS, CAIXA
WHERE CAIXA.ORCAMENTO = ORCAMENTO.CODIGO
AND ORCAMENTO.CODIGO = 1010
AND NOT ISNULL(CAIXA.PAGAMENTO)
SACOFRITO 25/05/2011 11:20:18
#374924
ASHKATCHUP, como assim programa de testar sql?
Voce pode me passar algum? Nao conheço coisa desse tipo
ASHKATCHUP 25/05/2011 11:22:14
#374926
Qual banco de dados você está utilizando? Qual o tipo de conexão?
SACOFRITO 25/05/2011 11:24:22
#374928
Access e a conexao é DAO
ASHKATCHUP 25/05/2011 11:28:21
#374932
O próprio ACCESS tem um depurador de SQL, eu acho...

Se não, procura por um tal de WINSQL. Eu uso ele para testar. é pequeno, simples mas MUITO util!
GUTOTEC 25/05/2011 13:19:43
#374945
Saco Frito , o grande !

Se não me engano voce nao tem como no ACCESS usar em 2 tabelas diferentes 2 campos iguais chamados codorc para fazer isso que precisa.
vai dar pau , tenta mudar esse nome do campo em 1 das tabelas
pelo menos comigo não aceita no ACCESS 2000

Un exemplo de InnerJoin


Citação:

Dim rs As New ADODB.Recordset

SQL = [Ô]SELECT * FROM Freqfunc INNER JOIN Funcionarios on funcionarios.id = freqfunc.funcionario [Ô]
SQL = SQL & [Ô]WHERE freqfunc.cod > [Ô] & Val(Txtid.Text) & [Ô] ORDER BY freqfunc.cod[Ô]

rs.Open SQL, conexao
[ô]--------------------
If rs.EOF Then [ô] se nao encontrou
MsgBox [Ô]Fim de arquivo![Ô]
Else
MostraDados rs
End If

rs.Close: Set rs = Nothing




Página 1 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas