Ir para conteúdo

POWERED BY:

Arquivado

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

Beraldo

Dois campos de uma tabela relacionados com o de uma outra

Recommended Posts

Olá, pessoal.

Tenho uma tabela chamada usuarios, na qual armazeno informações de usuários, como ID, nome, CPF, nível (administrador, professor ou aluno) e outros dados. Há uma outra tabela chamada aulas, na qual armazeno as datas das aulas marcadas.

 

Eis o código da tabela aulas (os campos aluno e professor estão relacionados com o campo id da tabela usuarios):

 

 

Create Table If Not Exists aulas(
 		 id smallint(5) Unsigned Not Null auto_increment,
		 aluno smallint(5) Unsigned default Null,
		 professor smallint(5) Unsigned Not Null,
 		 data_hora datetime,
		 Primary Key (id),
		 Foreign Key (aluno)
		   References usuarios(id) On Delete Cascade On Update Cascade,
		 Foreign Key (professor)
  		  References usuarios(id) On Delete Restrict On Update Cascade
	)type = innodb Character Set latin1 Collate latin1_general_ci

 

O que eu preciso fazer é o seguinte: selecionar as datas das aulas, para que sejam apresentadas na tela com os respectivos alunos e professores. O problema é que os nomes dos alunos e professores estão na tabela usuarios, cujo código é dispensável, apenas lembro que existem os campos "nome" e "id", corretamente criados e preenchidos.

 

A consulta deveria ficar mais ou menos assim:

Select DATE_FORMAT(a.data_hora, '%d/%m/%Y') as data, DATE_FORMAT(a.data_hora, '%H:%i') as hora, nome_do_aluno as aluno, nome_do_professor as professor From aulas as a Where a.data_hora >= NOW()

 

O que eu posso colocar no lugar de nome_do_aluno e nome_do_professor, para pegar os dados corretamente?

 

Farei um pequeno esboço daas duas tabelas, somente para dar uma idéia de como estão oss dados

 

usuarios

id	|   nome	 |  id_nivel
  1	|   Beraldo  |   3
  2	|  Prof. Zé   |  2
* Nível 2 = Professor, nível 3 = aluno

 

 

aulas

data_hora				 |  aluno   |   professor
2007-05-10 08:00:00  |	   1	|   2

O resultado deve ser:

Data		 |  Hora   |   Aluno   | Professor
10/05/2007 |  08:00  | Beraldo  | Prof. Zé

A data e a hora aparecem corretamente. O problema é selecionar o nome... como posso fazer?

 

Obrigado.

 

Abraços,

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala cara.

Vou responder rapidão, mas tenta algo do tipo:

SELECT A.*,B.nome AS NOMEALUNO,C.nome AS NOMEPROFESSOR

FROM aulas A

LEFT JOIN usuarios B ON B.id = A.aluno

LEFT JOIN usuarios C ON C.id = A.professor

Fiz um teste rapido com a estrutura e dados que você passou e funfou, v c é o que está precisando.

vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo, parceiro!! Funcionou perfeitamente, como eu precisava. :D

 

Eu não sabia que era possível usar dois aliases diferentes para uma mesma tabela. http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif :P

 

Valeu!

 

Abraços,

Beraldo

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.