none
Rotina para consultar, atualizar no banco e mostrar o resultado RRS feed

  • Pergunta

  • Olá pessoal, sou um novato no ambiente de desenvolvimento SQL, estou construindo um comando da seguinte forma:

    DECLARE @Nome_Aluno VARCHAR(50),
            @Media DECIMAL,
            @RESULTADO VARCHAR(10)

    SELECT
         @Nome_Aluno = Nome_Aluno,
         @Media = (Primeira_Nota + Segunda_Nota)/ 2.00


    FROM ALUNOS
    WHERE Nome_Aluno = 'Matias'     -- INFORME O NOME DO ALUNO DA TABELA
        IF @Media >=5.00
        BEGIN
             SELECT @RESULTADO = 'Aprovado';
        END;
        ELSE
        BEGIN
             SELECT @RESULTADO = 'Reprovado';
        END;


        SELECT ' ALUNO ' + @Nome_Aluno + ' Esta ' + @RESULTADO +  ' Com media ' +CAST(@Media AS VARCHAR);

    Este comando está funcionando perfeitamente! Mas o que acontece é o seguinte, quando eu executo esse comando ele soma a Primeira_Nota + Segunda_Nota  me mostra a média mas quando executo o comando "Select * from ALUNOS" a coluna está com o numero 0 ...!  Eu quero colocar o comando UPDATE na declaração mas até agora não sei como!! Preciso de uma ajuda básica. 

    Autor. Eurico Alves

    sábado, 24 de janeiro de 2015 16:38

Respostas

  • Eurico,

    Sua ideia é atualizar também uma coluna de Média também na tabela na tabela de alunos?

    Se for isto, vc poderia fazer algo como (logo após SELECT que calcula a média e antes do IF, por exemplo):

    UPDATE ALUNOS SET Media = @Media
    WHERE Nome_Aluno = 'Matias' 

    • Marcado como Resposta EuricoSorter sábado, 24 de janeiro de 2015 17:50
    sábado, 24 de janeiro de 2015 17:11

Todas as Respostas

  • Eurico,

    Sua ideia é atualizar também uma coluna de Média também na tabela na tabela de alunos?

    Se for isto, vc poderia fazer algo como (logo após SELECT que calcula a média e antes do IF, por exemplo):

    UPDATE ALUNOS SET Media = @Media
    WHERE Nome_Aluno = 'Matias' 

    • Marcado como Resposta EuricoSorter sábado, 24 de janeiro de 2015 17:50
    sábado, 24 de janeiro de 2015 17:11
  • Deleted
    sábado, 24 de janeiro de 2015 17:39
  • Muito obrigado Renato Groffe, comecei ver as coisas andarem aqui no SQL com a sua ajuda!!!!  Atualizou cara!! Muito obrigado!!! 

    Setei os códigos da seguinte forma 

    DECLARE @Nome_Aluno VARCHAR(50),
            @Media DECIMAL,
            @RESULTADO VARCHAR(10)

    SELECT  
         @Nome_Aluno = Nome_Aluno,
         @Media = (Primeira_Nota + Segunda_Nota)/ 2.00


    FROM ALUNOS
    WHERE Nome_Aluno = 'Matias'
        IF @Media >=5.00
        BEGIN

    UPDATE ALUNOS SET Media = @Media

         WHERE Nome_Aluno = 'Matias' 

             SELECT @RESULTADO = 'Aprovado';
        END;
        ELSE
        BEGIN
             SELECT @RESULTADO = 'Reprovado';
        END;


        SELECT ' ALUNO ' + @Nome_Aluno + ' Esta ' + @RESULTADO +  ' Com media ' +CAST(@Media AS VARCHAR);





    sábado, 24 de janeiro de 2015 17:47
  • Eurico,

        Evite ter uma coluna de média que é um cálculo de outras colunas da sua tabela...

        Lembre-se que parte do seu bom trabalho depende de bases de dados bem desenhadas, e ter esse campo que é um cálculo de outros campos, além de violar as regras de normalização, ainda gasta mais espaço da sua base, pode prejudicar a performance, e se não for constantemente atualizado, pode retornar resultados errados.


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    segunda-feira, 26 de janeiro de 2015 13:16
    Moderador
  • Deleted
    segunda-feira, 26 de janeiro de 2015 13:54
  • José,

         A coluna calculada resolveria o problema do cálculo e do espaço em disco, mas ainda assim o design da base estaria violando as regras de normalização...


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    segunda-feira, 26 de janeiro de 2015 13:56
    Moderador
  • Deleted
    segunda-feira, 26 de janeiro de 2015 14:02