【发布时间】:2015-11-10 08:11:47
【问题描述】:
首先,这是作业的一部分,但我试图更清楚地了解 count() 函数在查询数据库时是如何工作的。
问题是:列出学生的姓名、SSN和修过的课程数量(不同季度修过的具有相同CourseNumber的课程算作不同的课程)。
我一直在用这个查询:
SELECT S.Name, S.SSN, COUNT(*)
FROM Student S, Enrollment E
WHERE S.SSN = E.SSN
GROUP BY S.SSN
这似乎返回了正确的答案,但我不知道为什么。结果,我似乎无法正确回答下一个问题(假设在不同季度学习的具有相同 CourseNumber 的课程被视为一门课程)。
这里是创建表命令,因此您可以查看哪个表包含哪些信息:
CREATE TABLE Student(
SSN INT(9),
Name VARCHAR(20),
Major VARCHAR(30),
PRIMARY KEY (SSN)
);
CREATE TABLE Course(
CourseNumber INT(5),
PrerequisiteCourseNumber INT(10),
CourseTitle VARCHAR(10),
NumberUnits INT(2),
PRIMARY KEY (CourseNumber)
);
CREATE TABLE Section(
CourseNumber INT(5),
Quarter VARCHAR(10),
RoomNumber INT(5),
DayTime VARCHAR(20),
PRIMARY KEY (CourseNumber,Quarter),
FOREIGN KEY (CourseNumber) REFERENCES Course(CourseNumber)
);
CREATE TABLE Enrollment(
SSN INT(9),
CourseNumber INT(5),
Quarter VARCHAR(10),
Grade VARCHAR(1),
PRIMARY KEY (SSN,CourseNumber,Quarter),
FOREIGN KEY (SSN) REFERENCES Student(SSN),
FOREIGN KEY (CourseNumber) REFERENCES Course(CourseNumber),
FOREIGN KEY (Quarter) REFERENCES Section(Quarter)
);
任何指针?
【问题讨论】:
-
也许这里有一些关于计数和组的信息:stackoverflow.com/questions/4039194/…
-
这是作业的一部分 与您的问题无关,但如果 SSN 代表社会安全号码……您永远不会将原始 SSN 存储在数据库表中现实生活;-)
-
@Leigh 当然。只是一个学校作业,所以没有存储真正的 SSN,数据库是本地的。 :)
-
@codenko - 是的,这听起来像是一项学校作业,但是 .. 很高兴听到有常识的人 :-) 你会惊讶于实际上有多少人会存储明文形式的信息......