Ir ao conteúdo
  • Cadastre-se
Hugo Vidal

RESOLVIDO Utilização do LEFT JOIN para consultar apenas 1 registro;

Recommended Posts

Olá galera! primeiramente agradeço a oportunidade de estar no fórum clubedohardware...

Minha dúvida é, tenho o seguinte banco de dados: Que se chama 'Escola'

 

70IMQo.png

 

Meu problema é o seguinte. Eu consigo fazer tranquilo o left join para ligar as 3 tabelas, porém vem todos os dados de todos os alunos cadastrados no banco como aparece na imagem abaixo: Obs: adicionei apenas 2 cadastros ->

 

ddjC45.png

 

...  Pois bem, eu gostaria de saber como eu faria para fazer esse left join para puxar os dados de apenas 1 aluno e não de todos cadastrados no banco no comando do left join ou left outer join

Obs: quero tanto os dados que contém null quando os que já foram inseridos e que vão aparecer com o comando. (Quero todas as tabelas, independentemente se tem ou não dados)

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hugo Vidal

 

Basta você acrescentar no final da consulta a clausula:  WHERE Aluno.id = 1

Mas eu aconselharia a usar o INNER JOIN, caso possa usa-lo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz com Inner Join e sai perfeitamente com o where desse jeito: 

 

select N.Nota1, N.Nota2, M.Materia, A.Matriculafrom notas as Ninner join materias as Mon N.Materias_id = M.idinner join aluno as Aon N.Aluno_id = A.idwhere A.id like 1;
 
Porém... Só aparece os dados do Aluno 1 que se encontra registros... Eu quero que venha os null também... Eu tentei fazer como você me disse utilizando o where da seguinte forma:
 
select * from materias left outer join notas on notas.Materias_id = materias.idwhere aluno.id = 1;
 
Porém... Deu problema, não compilou. Então tentei o seguinte...
 
select * from materias left outer join notas on notas.Materias_id = materias.idwhere notas.Aluno_id like 1; 
 
Deu certo, porém trás apenas os resultados que estão inseridos e não os null também, o qual eu quero visualizar.

@dif

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Hugo, veja se é isso que você quer.

 

select * from materias left outer join notas on notas.materiais_id = materiais.idwhere aluno_id is null or aluno_id = 1;

 

Pra falar a vdd, não entendi direito o que está querendo, se não for isso, poste todos os dados de todas as tabelas, e poste qual seria a matriz de dados que desejaria como retorno, talvez fique mais fácil.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu amigooo @Erciley Junior ! Obrigado amigo, me ajudou muito!! é isso mesmo :D

Você já matou minha pergunta, só mais uma pergunta por fora... Teria como, no lugar do aluno_id (chave primaria int) eu utilizasse a Matricula (coluna varchar) da tabela Aluno para exibir este mesmo resultado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Hugo, imaginando que esse campo matrícula seja o nome do aluno ou algo do tipo, tem sim.

 

Você só tem que sempre se lembrar que campos usados em Where e JOIN, precisam ter índices para melhorar a performance das suas querys 

 

T+ ^^

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×