Usuário com melhor resposta
Procedure de consulta com INNER JOIN

Pergunta
-
Bom dia pessoal,
Tenho uma certa dificuldade com banco de dados e acredito que vocês possam me ajudar, pois minha dúvida é bem simples. Tenho 3 tabelas conforme abaixo
tb_aluno tb_professor tb_relacionamento
*ID *ID ID_ALUNO
NOME NOME ID_PROFESSOR
pois bem, com essas tabelas eu faço o relacionamento de professores com alunos N:N. Tenho um 2 dropdownlist que populam os nomes de aluno e professor e um botão para adicionar o relacionamento. Após efetuado o relacionamento, preciso que o nome do aluno relacionado a tal professor seja exibido em um listbox.
Então vamos a pergunta:
Preciso criar uma procedure de consulta que mostre o nome do aluno relacionado que contem na tb_relacionamento, então pra isso eu preciso fazer um join nas tabelas, correto? Como ficaria essa proc?? Outra coisa que eu gostaria é que um registro não pode ser igual, exemplo: Se eu relacionar o professor JOSÉ com o aluno PEDRO uma vez, quando eu for efetuar um novo relacionamento não pode deixar que relacione JOSÉ com PEDRO novamente, eles são podem ser relacionados com outros alunos e professores.
Aguardo uma ajudinha
Abraços e desde já obrigado
Respostas
-
Bom Dia Magrão,
Acredito que a procedure faria algo parecido com uma das implementações abaixo:
Code SnippetCREATE
PROCEDURE uspRetornaProfessoresRelacionados@IDAluno
INTAS
SELECT
A.Nome AS NomeAluno, P.Nome AS NomeProfessorFROM
tb_aluno AS AINNER
JOIN tb_relacionamento AS AP ON A.IDAluno = AP.IDAlunoINNER
JOIN tb_professor AS P ON AP.ID_Professor = P.IDProfessorWHERE
A.ID = @IDAlunoGO
CREATE
PROCEDURE uspRetornaAlunosRelacionados@IDProfessor
INTAS
SELECT
A.Nome AS NomeAluno, P.Nome AS NomeProfessorFROM
tb_aluno AS AINNER
JOIN tb_relacionamento AS AP ON A.IDAluno = AP.IDAlunoINNER
JOIN tb_professor AS P ON AP.ID_Professor = P.IDProfessorWHERE
P.ID = @IDProfessorGO
EXEC
uspRetornaProfessoresRelacionados @IDAluno = AlgumIDEXEC
uspRetornaAlunosRelacionados @IDProfessor = AlgumIDA respeito de JOINs, sugiro consultar o MSDN Experience. No programa fiz um vídeo mostrando como eles funcionam e acredito que vá lhe ajudar bastante. Maiores informações em:
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!158.entry
[ ]s,
Gustavo
Todas as Respostas
-
Bom Dia Magrão,
Acredito que a procedure faria algo parecido com uma das implementações abaixo:
Code SnippetCREATE
PROCEDURE uspRetornaProfessoresRelacionados@IDAluno
INTAS
SELECT
A.Nome AS NomeAluno, P.Nome AS NomeProfessorFROM
tb_aluno AS AINNER
JOIN tb_relacionamento AS AP ON A.IDAluno = AP.IDAlunoINNER
JOIN tb_professor AS P ON AP.ID_Professor = P.IDProfessorWHERE
A.ID = @IDAlunoGO
CREATE
PROCEDURE uspRetornaAlunosRelacionados@IDProfessor
INTAS
SELECT
A.Nome AS NomeAluno, P.Nome AS NomeProfessorFROM
tb_aluno AS AINNER
JOIN tb_relacionamento AS AP ON A.IDAluno = AP.IDAlunoINNER
JOIN tb_professor AS P ON AP.ID_Professor = P.IDProfessorWHERE
P.ID = @IDProfessorGO
EXEC
uspRetornaProfessoresRelacionados @IDAluno = AlgumIDEXEC
uspRetornaAlunosRelacionados @IDProfessor = AlgumIDA respeito de JOINs, sugiro consultar o MSDN Experience. No programa fiz um vídeo mostrando como eles funcionam e acredito que vá lhe ajudar bastante. Maiores informações em:
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!158.entry
[ ]s,
Gustavo
-