【发布时间】:2014-01-24 03:06:33
【问题描述】:
我有两张表如下:
TABLE 标记列表:
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;
我不明白如何继续使用查询 1 旋转查询 2 的结果。我可能走错了方向,但我不知道。
【问题讨论】:
-
从长远来看,进一步规范化数据可能会为您提供更好的服务;重复的列通常是设计缺陷的标志。
-
@Clockwork-Muse- 有时我们都有义务接受事物的本来面目而不改变它们,不是吗?这对我来说就是其中之一。