INNER JOIN COM 3 TABELAS

WEBIER 04/01/2017 12:21:15
#470326
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?
KERPLUNK 04/01/2017 13:29:15
#470328
Poderia facilitar um para nós... O melhor seria mostrar a estrutura das tabelas e o que você quer como resultado.
WEBIER 04/01/2017 13:50:35
#470331
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 ([txt-color=#e80000]até aqui funcionando[/txt-color])

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 [txt-color=#e80000]SIM [/txt-color]maria
100 NÃO raimundo
123 [txt-color=#e80000]SIM [/txt-color]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 [txt-color=#e80000]<>[/txt-color] pedidos.cod_pedido ele oculta do grid
JABA 04/01/2017 14:12:50
#470336
Resposta escolhida
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) [txt-color=#e80000]LEFT JOIN[/txt-color] NotaFiscal ON NotaFiscal.cod_pedido = pedidos.cod_pedido ORDER BY var_codped desc;[Ô]

KERPLUNK 04/01/2017 14:23:49
#470339
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
WEBIER 04/01/2017 15:34:51
#470349
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) [txt-color=#e80000]LEFT JOIN[/txt-color] NotaFiscal ON NotaFiscal.cod_pedido = pedidos.cod_pedido ORDER BY var_codped desc;[Ô]





Funcionou perfeitamente,

Obg JABA
Tópico encerrado , respostas não são mais permitidas