Courses Teachers Students StudentCourses
CourseID TeacherID StudentID CourseID
CourseName TeacherName StudentName StudentID
TeacherID
您好,
这些是我的表,我有两个问题..
我很困惑,因为StudentCourses
表。提前谢谢!
1
SELECT *
FROM Students s
INNER JOIN StudentCourses sc
ON s.StudentID = sc.StudentID
UNION
SELECT COUNT(courseID)
FROM StudentCourses dd
INNER JOIN Student ss
ON ss.studentID = dd.studentID
GROUP BY studentID
在这种情况下JOIN
是否合适?
2
SELECT *
FROM Students s
JOIN StudentCourses sc
ON s.StudentID = sc.StudentID
JOIN Courses c
ON sc.COurseID = c.CourseID
WHERE CourseName = ‘Art%’
这是对的吗?
答案 0 :(得分:1)
对于您的第一个答案,您说您需要学生列表(我假设您需要输出仅在学生表中提供的详细信息,例如姓名),以及他们注册的课程数量。
这个问题的第二部分可以通过计算每个学生的学生课程表中有多少行来完成:
SELECT studentid, COUNT(courseID) num_of_enrolled_courses
FROM studentcourses
GROUP BY studentID;
完成后,您只需将此查询加入学生表即可获得额外信息:
select s.studentname,
sc.num_of_enrolled_courses
from studentname s
inner join (SELECT studentid, COUNT(courseID) num_of_enrolled_courses
FROM studentcourses
GROUP BY studentID) sc on s.studentid = sc.studentid;
对于您的第二个查询,您几乎是正确的 - 您在课程表上的过滤器必须为CourseName like 'Art%'
(即使用like
而不是' ='当您和' #39;重新进行通配符搜索)。您还需要输出您感兴趣的列,可能是students.studentname和courses.coursename。