RELACIONANDO 4 TABELAS NUMA SQL

WEBIER 22/08/2007 18:12:02
#232132
tenho o seguinte sql:
"SELECT CLIENTE.*, PARCELAS.*, OS.* FROM CLIENTE INNER JOIN (PARCELAS INNER JOIN OS ON PARCELAS.COD_OS = OS.COD_OS) ON CLIENTE.CODIGO = OS.COD_CLIENTE"


e tambem tenho esse outra sql:
"SELECT CLIENTE.*, PARCELAS.*, PEDIDOS.* FROM CLIENTE INNER JOIN (PARCELAS INNER JOIN PEDIDOS ON PARCELAS.COD_PEDIDO = PEDIDOS.COD_PEDIDO) ON CLIENTE.CODIGO = PEDIDOS.COD_CLIENTE"


AS DUAS SQL ESTÃO FUNCIONANDO PERFEITAMENTE!

O que quero na verdade é unir as 4 tabelas numa sql somente.

as tabelas são:

CLIENTE
PEDIDOS
OS
PARCELAS

os campos q fazem o relacionamento são:

CLIENTE:
CODIGO

PEDIDO:
COD_PEDIDO
COD_CLIENTE


OS:
COD_OS
COD_CLIENTE


PARCELAS:
COD_OS
COD_PEDIDO

USUARIO.EXCLUIDOS 22/08/2007 18:16:28
#232134

Cara...sei q é fácil falar mas..

vai metendo INNER JOIN em tudo na sequencia q funciona...n eskece de separar por parensentes..

tenta assim ó

SQL = SELECT Cliente.Código, OS.CodOS, Pedido.CódPedido
FROM ((Cliente INNER JOIN OS ON Cliente.Código = OS.CodCliente) INNER JOIN Pedido ON Cliente.Código = Pedido.CódCLiente) INNER JOIN Parcelas ON (Parcelas.CodPedido = Pedido.CódPedido) AND (OS.CodOS = Parcelas.CodOS)


eu montei uma tabela fui testando..faça as adaptações necessárias

boa sorte

WEBIER 22/08/2007 18:39:16
#232140
fiz assim:

"SELECT CLIENTE.*, PARCELAS.*, PEDIDOS.*, OS.* FROM ((Cliente INNER JOIN OS ON Cliente.CODIGO = OS.COD_CLIENTE) INNER JOIN PEDIDOS ON Cliente.CODIGO = PEDIDOS.COD_CLIENTE) INNER JOIN Parcelas ON (Parcelas.COD_PEDIDO = PEDIDOS.COD_PEDIDO) AND (OS.COD_OS = Parcelas.COD_OS)"


nao deu erro, mas nao apareceu nada no grid.

somente limpo as linhas e ficou somente o cabeçalho das colunas... como seu não houvesse nenhum registro na tabela... mas possui sim... possui 16 parcelas
USUARIO.EXCLUIDOS 23/08/2007 07:07:21
#232161


Cara..faz assim pra testar:

Tire os parenteses, e especifique ao invés do asterisco, os campos formalmente...

outra coisa...vai montando aos pedaços...tipo..monta um inner, testa, rodou? acrescenta outro, testa e assim vai..

qq coisa manda ae


WEBIER 23/08/2007 14:46:46
#232298
fiz de todo jeito.... quando nao dar erro... nao aparece nada no grid.



alguem pode me ajudar?
RICARDOMADRUGA 23/08/2007 16:44:53
#232384
Tenta assim:

"SELECT CLIENTE.*, PARCELAS.*, PEDIDOS.*, OS.* " &_
"FROM CLIENTE, PARCELAS, PEDIDOS, OS " & _
"WHERE CLIENTE.CODIGO = OS.COD_CLIENTE " & _
"AND CLIENTE.CODIGO = PEDIDOS.COD_CLIENTE " & _
"AND PARCELAS.COD_PEDIDO = PEDIDOS.COD_PEDIDO " & _
"AND OS.COD_OS = PARCELAS.COD_OS"

Verifica se os relacionamentos estão certos, somente copiei teu exemplo, neste exemplo voce não usa INNER JOIN, somente o sinal de igual.
Depois me passa o resultado.


WEBIER 24/08/2007 02:46:47
#232474
Fiz do mesmo jeito e nao deu erro nao, mas limpou as linhas do grid.
USUARIO.EXCLUIDOS 24/08/2007 06:59:13
#232478

Os dados contidos nessas tabelas estão consistentes, batendo e tal..

pq nesse tipo de consulta, para aparecer algo...todos codigos relacionados devem bater


da um aolhada ae...pq ta sinistro!!
USUARIO.EXCLUIDOS 24/08/2007 09:34:53
#232495
Deve existir alguma condição que está passando desapercebida por você.
Pelas instruções que passou era para funcionar, mas mesmo assim experimente o código abaixo:

SELECT CLIENTE.*, PARCELAS.*, OS.*, PEDIDOS.*
FROM CLIENTE
INNER JOIN OS ON
CLIENTE.CODIGO = OS.COD_CLIENTE
INNER JOIN PARCELAS ON
PARCELAS.COD_OS = OS.COD_OS
INNER JOIN PEDIDOS ON
PARCELAS.COD_PEDIDO = PEDIDOS.COD_PEDIDO AND
CLIENTE.CODIGO = PEDIDOS.COD_CLIENTE
Tópico encerrado , respostas não são mais permitidas