Ir para conteúdo

POWERED BY:

Arquivado

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

Ronaldo Marcos

Left Outer Join usando Where (sem correspondência)

Recommended Posts

Gostaria de unir duas tabelas exibindo todo o conteúdo de uma delas. Qual a idéia: tenho um sistema de cadastro onde o cara vai escolher qual seus conhecimentos, no primeiro banco eu tenho os conhecimentos e no segundo os individuos exemplo:

 

tabela - individuos

01 joão

02 pedro

 

tabela - conhecimentos

01 Economia

02 Matematica
03 Geografia

 

Numa terceira tabela vou guardar os conhecimentos por indivíduo:

 

tabela - indcon

01 joão - 01 Economia

01 João - 02 Matematica

 

Mas deve aparecer todos os conhecimentos para ele no formulário, inclusive os que ele nao selecionou.

|x| Economia

| | geografia

|x| matematica

 

Eu tentei salvar todos os campos na terceira tabela (inclusive os que ele não marcou), funciona, mas ia gerar dados desnecessários demais.

 

Ai fui tentar com Left Outer Join assim:

 

select * from conhecimentos a left outer join indcon b on a.cod_conhecimentos = b.cod_conhecimentos

Isso funciona, mas quero para um indiviou apenas, se usar where para filtrar pelo codigo do individuo eu perco os campos que ele nao marcou... acho que isso explica, já tentei outras formas mas nenhuma que desse certo. Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim :

 

Faça Uma tabela virtual lendo individuos com outer join em indcon

 

Faça uma leitura de conhecimentos com um outer join na virtual acima

 

Creio que resolva

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso Motta?

 

select * from conhecimentos left outer join (select * from individuos a left outer join indcon as b on a.cod_conhecimentos = b.cod_conhecimentos where b.cod_individuos = '1') as d on c.cod_conhecimentos = d.cod_conhecimentos

 

Funcionou, os campos não correspondentes ficaram null, só tratar eles no código agora... Obrigado.

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.