INNER JOIN COM 3 TABELAS
Pessoal, tou fazendo um inner join com 3 tabelas
SQL 2008
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?
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?
Poderia facilitar um para nós... O melhor seria mostrar a estrutura das tabelas e o que você quer como resultado.
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
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
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;[Ô]
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
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