SQL 3.5 compact

evanez

Membro
Boas....

Tenho uma dúvida

Tenho várias tabelas, a principal tem chaves que ligam às outras tabelas.
Queria fazer um select de todas as tabelas, mesmo que tivesse chaves a null.

Exemplo:
Tab1
ID
Nome
Sexo_ID
Profissao_ID

Tab2
ID
Sexo

Tab3
ID
Profissao

Mesmo não tendo a coluna Sexo_ID e Profissao_ID preenchida (null) queria mostrar a tab1 com os respectivos nomes.
 
Código:
select nome,
         sex.sexo,
         prof.profissao
from tab1

INNER JOIN sex ON  tab1.Sexo_ID  = tab2.id 

INNER JOIN prof ON  tab1.Profissao_ID  = tab3.id
não testei mas é uma coisa assim do genero



se quizeres por as descrições do sexo e da profissão tens de por os ids dos mesmos na tab 1

caso contrario fazes

Código:
select nome,
                 Profissao_ID  ,
                sexo_ID
             from tab1
 
Última edição:
Boas....

Tenho uma dúvida

Tenho várias tabelas, a principal tem chaves que ligam às outras tabelas.
Queria fazer um select de todas as tabelas, mesmo que tivesse chaves a null.

Exemplo:
Tab1
ID
Nome
Sexo_ID
Profissao_ID

Tab2
ID
Sexo

Tab3
ID
Profissao

Mesmo não tendo a coluna Sexo_ID e Profissao_ID preenchida (null) queria mostrar a tab1 com os respectivos nomes.

select tab1.*, tab2.sexo, tab3.profissao from tab1 left join tab2 on tab1.sexo_id=tab2.id left join tab3 on tab1.profissao_id=tab3.id
 
Código:
select nome,
         sex.sexo,
         prof.profissao
from tab1

INNER JOIN sex ON  tab1.Sexo_ID  = tab2.id 

INNER JOIN prof ON  tab1.Profissao_ID  = tab3.id
não testei mas é uma coisa assim do genero



se quizeres por as descrições do sexo e da profissão tens de por os ids dos mesmos na tab 1

caso contrario fazes

Código:
select nome,
                 Profissao_ID  ,
                sexo_ID
             from tab1


Uma vez que ele pretende que caso não exista relação na tabela, lhe dê nulo, o inner join tem que ser substituido pelo left join. ;)
 
Muito obrigado pela ajuda.... já tinha pesquisado sobre o assunto e tinha chegado à conclusão que teria de usar o LEFT OUTER JOIN, mas ainda não estava a perceber como funcionava.

Já experimentei e está um espectáculo ;)
 
Back
Topo