Encontre um aluno com notas selecionadas

1

Acabei de criar um banco de dados do Access 2010 para analisar as notas dos alunos em um exame. Consegui obter notas para todos os alunos corretamente. Existem seis assuntos. O que eu quero fazer agora é encontrar alguém que tenha nota A em cinco de seis. Ou seja, quem perdeu a nota A completa por apenas um assunto.

Agora, tenho as notas dos alunos em um formato tabular. Os nomes dos alunos, seguidos por suas notas em todos os seis assuntos nas próximas seis colunas. Assim:

               ENG    LANGUAGE      PHY     CHE     BIO      MATH
ANN            A+      A+           C       A+      A+       A+

JOHN           B+       C           A       A+      B        C+

Para encontrar aqueles que obtiveram A + em todos os assuntos, adicionei A + como os critérios na consulta. Mas como encontramos aqueles que receberam A + em QUALQUER cinco assuntos?

Podemos adicionar uma expressão à consulta ou podemos usar um código vba? Você poderia por favor me ajudar com isso? Eu simplesmente não conseguia encontrar uma maneira de fazer isso. Qualquer ajuda é muito apreciada.

    
por Edwin 03.02.2015 / 01:30

1 resposta

0

Seu esquema de banco de dados é mal projetado. Com um esquema normalizado corretamente, você obterá os resultados com uma consulta simples. Isso provavelmente provavelmente deve ter 4 tabelas separadas, mas deixe-me mostrar como fazer isso com duas e uma consulta SQL simples.

Uma tabela armazenará as pontuações e uma tabela conterá nossos valores.

ScoreValues
-----------
ID | Value
A+ | 4.3
A | 4.0
B | 3.0
C+ | 2.3
C | 2.0
D | 1.0

Scores
------
StudentID | Subject | Score
ANN | ENG | A+
ANN | LANGUAGE | A+
ANN | PHY | C
ANN | CHE | A+
ANN | BIO | A+
ANN | MATH | A+
JOHN | ENG | B+
JOHN | LANGUAGE | C
JOHN | PHY | A
JOHN | CHE | A+
JOHN | BIO | B
JOHN | MATH | C+

select Count(Subject) as AplusGradeCount, Student
from Scores,ScoreValues 
where Scores.Score=ScoreValues.Value and
      ScoreValues.Value > 4.0
Group By Student

QueryResults
------------
AplusGradeCount | Student
5 | ANN
1 | JOHN

De qualquer forma, sugiro que você dedique algum tempo a aprender sobre a normalização do banco de dados . Um banco de dados corretamente normalizado tornará muito mais fácil a consulta dos dados.

    
por 03.02.2015 / 02:31