У меня есть две таблицы следующим образом:Имя столбца на колонке с заголовком и сосчитать/кронштейне на основе метки столбца в другой таблице
TABLE marklist:
student_id class_id subject_1 subject_2 subject_3 subject_4 subject_5
----------- ----------- ----------- ----------- ----------- ----------- ----------
1 9 78 87 95
2 9 67 95 87
3 9 85 84 85
4 10 70 65 78
5 10 75 80 81
6 10 80 75 82
Таблица subject_names
column_name subject_name
--------------- -------------
subject_1 English
subject_2 Chemistry
subject_3 Economics
subject_4 Accounts
subject_5 Biology
Теперь мне нужно создать такой отчет для class_id = 9
column_name subject_name no_of_students
--------------- ------------- --------------
subject_1 English 3
subject_2 Chemistry 3
subject_3 Economics 0
subject_4 Accounts 0
subject_5 Biology 3
Короче говоря, я должен создать отчет с COLUMN_NAMES, subject_name и число студентов из class_id = 9 (или 10, что угодно), которые появились в этой теме.
Все, что мне удалось сделать, это
1.
SELECT sn.column_name, sn.subject_name FROM subject_names sn;
и
2.
SELECT ml.class_id,
count(ml.subject_1) AS s1,
count(ml.subject_2) AS s1,
count(ml.subject_3) AS s1,
count(ml.subject_4) AS s1,
count(ml.subject_5) AS s1,
FROM marklist ml
WHERE ml.class_id = 9;
Я не понимаю, как я могу идти вперед и pivot результаты запроса 2 с запросом один. Я могу идти в неправильном направлении, но у меня нет идеи.
В долгосрочной перспективе, вы, вероятно, будет гораздо лучше обслуживаться в дальнейшем нормализации ваших данных; повторяющиеся столбцы часто являются признаком недостатков дизайна. –
@ Clockwork-Muse. Иногда мы все обязаны жить с вещами, как они, не меняя их, не так ли? Это одно из тех случаев для меня. – Rachcha