【发布时间】:2009-06-14 01:48:24
【问题描述】:
CREATE TABLE activities(activityid, name);
CREATE TABLE activity_scores(activityid, studentid, score);
CREATE TABLE students (id, name);
有没有什么方法可以编写单个 SELECT 查询,以这种格式为每个学生生成一个结果?
studentid | studentname | activity1_score | activity2_score | activity3_score [...]
用多个查询来做这件事很简单:
for each studentid in "select id from students":
print studentid
for each activity in "select activityid from activities":
select score from activity_scores where studentid = studentid
print score
(伪代码,我知道不准确)
肯定有一种方法可以使用单个 SELECT 查询来创建此结果,对吧?
【问题讨论】:
-
你的唯一性限制是什么?一个学生可以参加多个活动吗?一个学生可以多次参加同一个活动吗?单个学生是否可以多次参加同一活动并获得多次相同的分数?
-
假设每个学生在一项活动中只有一个分数,并且每项活动应该只有一个分数。