Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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.
Com um case ou iif dá para fazer o xiszinho...
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