Usuário com melhor resposta
Rotina para consultar, atualizar no banco e mostrar o resultado

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
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
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
-
-
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 = @MediaWHERE 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);
- Editado EuricoSorter sábado, 24 de janeiro de 2015 17:53
-
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
-
-
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
-