1

Я только что создал базу данных Access 2010 для анализа оценок студентов на экзамене. Я был в состоянии получить оценки для всех студентов правильно. Есть шесть предметов. То, что я хочу сделать сейчас, - это найти тех, кто получил оценку А в любых пяти из шести. То есть тот, кто пропустил полный балл только по одному предмету.

Прямо сейчас у меня есть оценки студентов в табличном формате. Имена студентов, а также их оценки по всем шести предметам в следующих шести столбцах. Как это:

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

JOHN           B+       C           A       A+      B        C+

Чтобы найти тех, кто получил A+ по всем предметам, я добавил A+ в качестве критерия в запросе. Но как найти тех, кто получил A+ в ЛЮБЫХ пяти предметах?

Можем ли мы добавить выражение к запросу, или мы можем использовать код VBA? Не могли бы вы помочь мне с этим?Я просто не мог найти способ сделать это. Любая помощь с благодарностью.

1 ответ1

0

Ваша схема базы данных плохо разработана. С правильно нормализованной схемой вы получите результаты простым запросом. На самом деле, вероятно, должно быть 4 отдельных таблицы, но я покажу вам, как это сделать с двумя и простым SQL-запросом.

Одна таблица будет содержать оценки, а одна таблица будет содержать наши значения.

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

В любом случае, я настоятельно рекомендую вам потратить время на изучение нормализации базы данных. Правильно нормализованная база данных сделает запрос данных намного проще.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .