Возможная структура таблицы (без определения столбцов):
Exam
---------
Exam_ID
Exam_name
number_of_req_subjects
number_of_opt_subjects <---- -1 could be infinite
Subject
-----------
Subject_id
subject_name
exam_subject
------------
exam_subject_id
exam_id
subject_id
required
exam_result
------------
exam_result_id
exam_subject_id
result
Чтобы получить число A для математики в экзамене A:
SELECT count(exam_result_id)
FROM exam_result er, exam_subject es, subject s, exam e
WHERE er.exam_subject_id = es.exam_subject_id
AND es.subject_id = s.subject_id
AND es.exam_id = e.exam_id
AND e.exam_name = 'A'
AND s.subject_name = 'MATH'
(я знаю, что объединение было бы лучше, чем объединение разных таблиц, но я немного ленив).
В результате поиска предметов ... у нас недостаточно информации. На самом деле, мой ответ может быть полностью отклонен, но, насколько я думаю, я могу получить его с помощью данной информации на данный момент. Создание чего-то для поиска - это всего лишь вопрос создания достаточно полезного выбора.