RELACIONANDO 4 TABELAS NUMA SQL
tenho o seguinte sql:
e tambem tenho esse outra sql:
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
"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
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
fiz assim:
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
"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
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
fiz de todo jeito.... quando nao dar erro... nao aparece nada no grid.
alguem pode me ajudar?
alguem pode me ajudar?
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.
"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.
Fiz do mesmo jeito e nao deu erro nao, mas limpou as linhas do grid.
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!!
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
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