none
Procedure de consulta com INNER JOIN RRS feed

  • 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
    quinta-feira, 20 de novembro de 2008 11:22

Respostas

  • Bom Dia Magrão,

     

    Acredito que a procedure faria algo parecido com uma das implementações abaixo:

     

    Code Snippet

    CREATE PROCEDURE uspRetornaProfessoresRelacionados

    @IDAluno INT

    AS

    SELECT A.Nome AS NomeAluno, P.Nome AS NomeProfessor

    FROM tb_aluno AS A

    INNER JOIN tb_relacionamento AS AP ON A.IDAluno = AP.IDAluno

    INNER JOIN tb_professor AS P ON AP.ID_Professor = P.IDProfessor

    WHERE A.ID = @IDAluno

    GO

     

    CREATE PROCEDURE uspRetornaAlunosRelacionados

    @IDProfessor INT

    AS

    SELECT A.Nome AS NomeAluno, P.Nome AS NomeProfessor

    FROM tb_aluno AS A

    INNER JOIN tb_relacionamento AS AP ON A.IDAluno = AP.IDAluno

    INNER JOIN tb_professor AS P ON AP.ID_Professor = P.IDProfessor

    WHERE P.ID = @IDProfessor

    GO

     

    EXEC uspRetornaProfessoresRelacionados @IDAluno = AlgumID

    EXEC uspRetornaAlunosRelacionados @IDProfessor = AlgumID

     

    A 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

    quinta-feira, 20 de novembro de 2008 12:41

Todas as Respostas

  • Bom Dia Magrão,

     

    Acredito que a procedure faria algo parecido com uma das implementações abaixo:

     

    Code Snippet

    CREATE PROCEDURE uspRetornaProfessoresRelacionados

    @IDAluno INT

    AS

    SELECT A.Nome AS NomeAluno, P.Nome AS NomeProfessor

    FROM tb_aluno AS A

    INNER JOIN tb_relacionamento AS AP ON A.IDAluno = AP.IDAluno

    INNER JOIN tb_professor AS P ON AP.ID_Professor = P.IDProfessor

    WHERE A.ID = @IDAluno

    GO

     

    CREATE PROCEDURE uspRetornaAlunosRelacionados

    @IDProfessor INT

    AS

    SELECT A.Nome AS NomeAluno, P.Nome AS NomeProfessor

    FROM tb_aluno AS A

    INNER JOIN tb_relacionamento AS AP ON A.IDAluno = AP.IDAluno

    INNER JOIN tb_professor AS P ON AP.ID_Professor = P.IDProfessor

    WHERE P.ID = @IDProfessor

    GO

     

    EXEC uspRetornaProfessoresRelacionados @IDAluno = AlgumID

    EXEC uspRetornaAlunosRelacionados @IDProfessor = AlgumID

     

    A 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

    quinta-feira, 20 de novembro de 2008 12:41

  • Show Gustavo. Muito obrigado


    Abraços
    quinta-feira, 20 de novembro de 2008 17:02