Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

leobrrj

[Resolvido] Problemas com joins

Recommended Posts

Pessoal,

 

estou com um problema num join..

 

 

estou trazendo dados de 3 tabelas diferentes e uma delas está com um dos campos NULL, e por isso a minha Query está voltando vazia, tem como mesmo um dos campos sendo NULL ela retornar os outros dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você postar a query com o seu objetivo, fica mais facil.

Mas, acredito que o que voce quer é um "left outer join". sendo assim, teste algo como:

 

tabela1 - c1, c2, c3
tabela2 - c1, c4, c5
tabela3 - c1, c6, c7

select tabela1.c1, c2, c3, c4, c5, c6, c7
from tabela1 
left outer join tabela2 on tabela1.c1 = tabela2.c1
left outer join tabela3 on tabela1.c1 = tabela3.c1
order by tabela1.c1

Compartilhar este post


Link para o post
Compartilhar em outros sites

use LEFT JOIN, leia esse artigo para você ter mais opções com JOIN: http://forum.imaster...-inner-e-right/

 

 

se você postar a query com o seu objetivo, fica mais facil.

Mas, acredito que o que voce quer é um "left outer join". sendo assim, teste algo como:

 

tabela1 - c1, c2, c3
tabela2 - c1, c4, c5
tabela3 - c1, c6, c7

select tabela1.c1, c2, c3, c4, c5, c6, c7
from tabela1 
left outer join tabela2 on tabela1.c1 = tabela2.c1
left outer join tabela3 on tabela1.c1 = tabela3.c1
order by tabela1.c1

 

 

E porque não usar o RIGHT JOIN ou o FULL OUTER JOIN?

Acho que depende muito da estrutura que esta sendo utilizada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

POwwww.. funcionou hehe

 

usei o que vcs falaram o LEFT JOIN.

 

 

me diagm uma coisa qual a diferença? exemplo

 

select c.nome_cliente, e.empresa_cliente

from cliente as c

left join empresa as e on c.cod_cliente = e.cod_cliente

 

 

PARA

 

select c.nome_cliente,e.empresa_cliente

from cliente as c, empresa as e

where c.cod_cliente = e.cod_cliente

Compartilhar este post


Link para o post
Compartilhar em outros sites

E porque não usar o RIGHT JOIN ou o FULL OUTER JOIN?

Acho que depende muito da estrutura que esta sendo utilizada.

falai Jr.

você perguntou e respondeu a sua dúvida com o famoso "depende", tb. usaria a mesma resposta "depende" da estrutura, no caso dele estava parecendo o clássico problema do LEFT

 

abs

me diagm uma coisa qual a diferença? exemplo

 

select c.nome_cliente, e.empresa_cliente

from cliente as c

left join empresa as e on c.cod_cliente = e.cod_cliente

 

PARA

 

select c.nome_cliente,e.empresa_cliente

from cliente as c, empresa as e

where c.cod_cliente = e.cod_cliente

 

o primeiro esta usando o LEFT JOIN explicito no comando, o segundo esta usando INNER JOIN implicito no comando, se quiser usar LEFT JOIN implicito tem que usar " *= ", leia o link novamente que te enviei anteriormente com atenção total nos detalhes, nesse caso o detalhe era somente um * do lado esquerdo

 

OBS.: no SQL 2008 não aceita mais a segunda forma (implícita)

 

bom que resolveu, boa sorte

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

falai Jr.

você perguntou e respondeu a sua dúvida com o famoso "depende", tb. usaria a mesma resposta "depende" da estrutura, no caso dele estava parecendo o clássico problema do LEFT

 

abs

 

Meu quesionamento foi justamente isso... usaram de cara o LEFT e fiquei na dúvida se tinha um "por que" lógico :P

 

Que bom que foi resolvido....

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

A.Jr, A unica diferença entre Left e Right é de qual lado a tabela principal está. Ou seja, se eu quiser pegar o registro da tabela do lado esquerdo mesmo que a da direita tenha null, eu uso left. Se for o inverso, o lado direito é obrigatório e o lado esquerdo pode ser null, então uso right. Já a questão do FULL Outer Join, ele irá pegar todos os registros das duas tabelas sem relacionamento. O que foje totalmente da idéia do problema aqui. abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.