我在使用必须查找参加课程的学生人数的SQL语句时遇到了一些麻烦。 我的数据库设计看起来像这样:
表课程: id | COURSE_NAME
表学生: id |名称
为了连接两个多对多的关系,我有一张桌子:
表 course_student: id | course_id | student_id数据
我想要的是找出有多少学生参加名为“数据库设计”的课程。我知道ID是“1”但是我说我不知道,我的SQL语句会是什么样子?
我尝试了几种不同联接的不同语句,首先从课程表中选择正确的ID,其中名称为“数据库设计”,接下来我要在中搜索course_student 表,其中course_id等于创建的id(在本例中为1),并且所有student_id都与此id相关联。
我知道这有点复杂,所以请告诉我是否需要以更好的方式解释。
由于 Mestika
答案 0 :(得分:9)
您可以尝试类似
的内容SELECT COUNT(cs.student_id)
FROM Course c INNER JOIN
course_student cs ON c.id = cs.course_id
WHERE c.course_name = 'Database Design'
你不必加入Students表,因为你已经在course_student表中有了ID,所以少了1个加入。
答案 1 :(得分:0)
SELECT count(a.id)
FROM Course a
INNER JOIN Course_Student b
ON a.id = b.course_id
WHERE a.course_name = 'Database Design'
答案 2 :(得分:0)
只是略有不同的风格,但结果相同
select COUNT(cs.student_id) as counter
from Course c, course_student cs
where c.id = cs.course_id
and c.course_name = 'Database Design'