Dúvida na consulta do mysql (Resolvido)

Se eu faço esta consulta

SELECT DISTINCT matricula.idPessoa, pessoa.nome, matricula.idAula, aula.diaSemana, aula.faixaEtaria, aula.horario, aula.nivel, aula.sexo, aula.idLocalAula, localaula.nome, aula.idModalidade, modalidade.nome, aula.idPessoa, pessoa.nome FROM matricula INNER JOIN aula ON matricula.idAula = aula.idAula INNER JOIN pessoa ON matricula.idPessoa = pessoa.idPessoa AND aula.idPessoa = pessoa.idPessoa INNER JOIN modalidade ON aula.idModalidade = modalidade.idModalidade INNER JOIN localaula ON aula.idLocalAula = localaula.idLocalAula WHERE matricula.idPessoa =48

Não volta nenhum resultado.

Se eu faço esta consulta

SELECT DISTINCT matricula.idPessoa, pessoa.nome, matricula.idAula, aula.diaSemana, aula.faixaEtaria, aula.horario, aula.nivel, aula.sexo, aula.idLocalAula, localaula.nome, aula.idModalidade, modalidade.nome, aula.idPessoa, pessoa.nome FROM matricula INNER JOIN aula ON matricula.idAula = aula.idAula INNER JOIN pessoa ON matricula.idPessoa = pessoa.idPessoa INNER JOIN modalidade ON aula.idModalidade = modalidade.idModalidade INNER JOIN localaula ON aula.idLocalAula = localaula.idLocalAula WHERE matricula.idPessoa =48

Onde está circulado com vermelho quero que apareça o nome do professor.

Se eu faço esta consulta

SELECT DISTINCT matricula.idPessoa, pessoa.nome, matricula.idAula, aula.diaSemana, aula.faixaEtaria, aula.horario, aula.nivel, aula.sexo, aula.idLocalAula, localaula.nome, aula.idModalidade, modalidade.nome, aula.idPessoa, pessoa.nome FROM matricula INNER JOIN aula ON matricula.idAula = aula.idAula INNER JOIN pessoa ON matricula.idPessoa = pessoa.idPessoa OR aula.idPessoa = pessoa.idPessoa INNER JOIN modalidade ON aula.idModalidade = modalidade.idModalidade INNER JOIN localaula ON aula.idLocalAula = localaula.idLocalAula WHERE matricula.idPessoa =48

Agora o nome do professor aparece. Mas aparece também no campo onde deveria aparecer só o nome do aluno.

Qual o comando certo para que isto aconteça?

A imagem das tabelas

Faltou dizer um detalhe muito importante.

O que diabos você quer listar?

Acho que entendi o problema.

Tente:

SELECT DISTINCT matricula.idPessoa, aluno.nome, matricula.idAula, aula.diaSemana, aula.faixaEtaria, aula.horario, aula.nivel, aula.sexo, aula.idLocalAula, localaula.nome, aula.idModalidade, modalidade.nome, aula.idPessoa, professor.nome FROM matricula INNER JOIN aula ON matricula.idAula = aula.idAula INNER JOIN pessoa aluno ON matricula.idPessoa = aluno.idPessoa INNER JOIN pessoa professor ON aula.idPessoa = professor.idPessoa INNER JOIN modalidade ON aula.idModalidade = modalidade.idModalidade INNER JOIN localaula ON aula.idLocalAula = localaula.idLocalAula WHERE matricula.idPessoa =48

Note que faço o JOIN 2 vezes com a tabela pessoa. Na primeira, renomeio a tabela para “aluno” e na segunda para “professor”.

É isto mesmo que eu quero valeu.