INNER JOIN COM 3 TABELAS

 Tópico anterior Próximo tópico Novo tópico

INNER JOIN COM 3 TABELAS

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#470326 - 04/01/2017 12:21:15

WEBIER
URUCUI
Cadast. em:Dezembro/2003


Pessoal, tou fazendo um inner join com 3 tabelas

SQL 2008

"SELECT campoX, campoY, campoZ, (CASE WHEN NotaFiscal.cod_pedido = pedidos.cod_pedido THEN 'SIM' ELSE 'NÃO' END) AS Status " & _
"FROM cliente INNER JOIN pedidos ON cliente.codigo = pedidos.cod_cliente INNER JOIN NotaFiscal ON NotaFiscal.cod_pedido = pedidos.cod_pedido ORDER BY var_codped desc;"


preciso relaciona-las, para obter todos os dados...
...tenho varios registros, porem somente tá aparecendo no grid os que NotaFiscal.cod_pedido = pedidos.cod_pedido os quem sao diferente nao aparece no grid

Onde tou errando?




#470328 - 04/01/2017 13:29:15

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Poderia facilitar um para nós... O melhor seria mostrar a estrutura das tabelas e o que você quer como resultado.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#470331 - 04/01/2017 13:50:35

WEBIER
URUCUI
Cadast. em:Dezembro/2003


Última edição em 04/01/2017 13:52:09 por WEBIER

Tabela1: CLIENTE (campo: CODIGO, NOME) vai se relacionar com a Tabela2: PEDIDOS (campo: COD_CLIENTE)
FROM cliente INNER JOIN pedidos ON cliente.codigo = pedidos.cod_cliente
Entao ele vai mostrar no grid "todos os PEDIDOS", exibindo o NOME do cliente de cada pedido (até aqui funcionando)

Exemplo:
Pedido      Cliente
92             maria
123            jose
100           raimundo
200           joseja


Tabela3: NOTAFISCAL (campo: COD_PEDIDO)
preciso pegar o NotaFiscal.cod_pedido e relacionar com o campo pedidos.cod_pedido

entao na minha tabela NOTAFISCAL tá assim

Cod_Nota    Valor       Cod_Pedido
01                89,50      0
02                90,00      92
03                52,00      0
04                82,00      123

entao quero que apareça no grid assim

Pedido      EmitirNotaFiscal       Cliente
92             SIM                           maria
100           NÃO                          raimundo
123           SIM                           jose
200           NÃO                          joseja

entao os pedidos que for NotaFiscal.cod_pedido = pedidos.cod_pedido = vai preencher com SIM e os que NotaFiscal.cod_pedido = 0 vai preencher com NÃO

da forma que postei ai em cima... só aparece os que tem SIM... ou seja, os registros que possui NotaFiscal.cod_pedido <> pedidos.cod_pedido ele oculta do grid




Resposta escolhida #470336 - 04/01/2017 14:12:50

JABA
CABO FRIO
Cadast. em:Agosto/2005


Última edição em 04/01/2017 14:14:10 por JABA

Tente assim:

"SELECT campoX, campoY, campoZ, (CASE WHEN NotaFiscal.cod_pedido = pedidos.cod_pedido THEN 'SIM' ELSE 'NÃO' END) AS Status " & _
"FROM (cliente INNER JOIN pedidos ON cliente.codigo = pedidos.cod_cliente) LEFT JOIN NotaFiscal ON NotaFiscal.cod_pedido = pedidos.cod_pedido ORDER BY var_codped desc;"



_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#470339 - 04/01/2017 14:23:49

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Eu nem sequer faria inner join para isso, usaria um "join natural":

SELECT tabela1.campo, tabela2.campo, tabela3.campo 'aqui mostro que você pode usar qualquer campo de qualquer tabela envolvida
FROM tabela1, tabela2, tabela3
WHERE tabela1.campo1 = tabela2.campo1 AND tabela2.campo2 = tabela3.campo1


_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#470349 - 04/01/2017 15:34:51

WEBIER
URUCUI
Cadast. em:Dezembro/2003


Citação:
:
Tente assim:

"SELECT campoX, campoY, campoZ, (CASE WHEN NotaFiscal.cod_pedido = pedidos.cod_pedido THEN 'SIM' ELSE 'NÃO' END) AS Status " & _
"FROM (cliente INNER JOIN pedidos ON cliente.codigo = pedidos.cod_cliente) LEFT JOIN NotaFiscal ON NotaFiscal.cod_pedido = pedidos.cod_pedido ORDER BY var_codped desc;"





Funcionou perfeitamente,

Obg JABA



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por WEBIER em 04/01/2017 15:35:25