【发布时间】:2019-04-01 15:00:29
【问题描述】:
我想要一个查询来获取彼此拥有最多课程的学生的名字和教师的名字以及这些课程的数量。
表学生:
CREATE TABLE Student(
id INT AUTO_INCREMENT,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255),
email VARCHAR(255) UNIQUE,
PRIMARY KEY (id)
);
桌老师:
CREATE TABLE Teacher(
id INT AUTO_INCREMENT,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255),
email VARCHAR(255) UNIQUE,
degree VARCHAR(10) NUT NULL,
PRIMARY KEY (id)
);
餐桌课程:
CREATE TABLE Course(
id INT AUTO_INCREMENT,
code INT NOT NULL UNIQUE,
name VARCHAR(255) NOT NULL,
st_id INT,
teach_id INT,
PRIMARY KEY (id),
FOREIGN KEY st_id REFERENCES Student (id),
FOREIGN KEY teach_id REFERENCES Teacher (id)
);
以下查询是否正确?即我可以在查询中使用 3 SELECT 吗?
查询1:
SELECT S.first_name
FROM Student AS S
INNER JOIN Course AS C
ON C.st_id = S.id
SELECT T.first_name
FROM Teacher AS T
INNER JOIN Course AS CC
ON CC.teach_id = T.id
SELECT COUNT(*)
FROM Course
WHERE Course.st_id = S.id
AND Course.teach_id = T.id
GROUP BY COUNT(*)
ORDER BY DESC;
查询2:
SELECT S.first_name, T.first_name, COUNT(*)
FROM Student AS S, Teacher AS T, Course
WHERE Course.st_id = S.id
AND Course.teach_id = T.id
GROUP BY COUNT(*)
ORDER BY DESC;
如果上述问题不正确(可能是第一个问题),请指导我正确回答。
注意:如果排序不是唯一的,请先按教师姓名排序,然后按学生姓名排序(为清楚起见,但对我来说并不重要)。
【问题讨论】:
-
您能否提供一些(简单)示例数据来解释您的问题的含义?
-
@GordonLinoff 例如,学生 S1 与 T1 老师有 3 门课程,学生 S2 与 T1 老师有 2 门课程......清楚吗?我在问题中添加了一条新注释。
-
您是否尝试过运行查询?结果如何?
-
@LelioFaieta 我得到了“错误答案”,但没有说明为什么是错误的。
-
错误答案来自您用来检查作业是否正确的工具?