sql 获取所有科目均及格的学生姓名
sql get students names who passed in all subjects
我有3张桌子
学生(id,姓名)
主题(id,姓名)
student_subjects(student_id,subject_id,标记)
我想select所有科目及格的学生姓名(所有科目分数>=50)
我试过这个:
SELECT DISTINCT s.NAME
FROM STUDENT_SUBJECTS sb,
STUDENTS s,
SUBJECTS b
WHERE s.ID = sb.STUDENT_ID
AND b.ID = sb.SUBJECT_ID
AND sb.MARK >= 50
但是这会得到任何科目大于或等于 50 的学生
有没有办法只得到通过所有科目的学生的名字?
这应该有效:
SELECT s.NAME
FROM STUDENT_SUBJECTS sb,
STUDENTS s,
SUBJECTS b
WHERE s.ID = sb.STUDENT_ID
AND b.ID = sb.SUBJECT_ID
GROUP BY S.NAME
HAVING MIN(SB.MARK)>=50
如果有两个同名的学生也按id分组:
SELECT s.NAME
FROM STUDENT_SUBJECTS sb,
STUDENTS s,
SUBJECTS b
WHERE s.ID = sb.STUDENT_ID
AND b.ID = sb.SUBJECT_ID
GROUP BY S.ID,S.NAME
HAVING MIN(SB.MARK)>=50
我有3张桌子
学生(id,姓名)
主题(id,姓名)
student_subjects(student_id,subject_id,标记)
我想select所有科目及格的学生姓名(所有科目分数>=50)
我试过这个:
SELECT DISTINCT s.NAME
FROM STUDENT_SUBJECTS sb,
STUDENTS s,
SUBJECTS b
WHERE s.ID = sb.STUDENT_ID
AND b.ID = sb.SUBJECT_ID
AND sb.MARK >= 50
但是这会得到任何科目大于或等于 50 的学生
有没有办法只得到通过所有科目的学生的名字?
这应该有效:
SELECT s.NAME
FROM STUDENT_SUBJECTS sb,
STUDENTS s,
SUBJECTS b
WHERE s.ID = sb.STUDENT_ID
AND b.ID = sb.SUBJECT_ID
GROUP BY S.NAME
HAVING MIN(SB.MARK)>=50
如果有两个同名的学生也按id分组:
SELECT s.NAME
FROM STUDENT_SUBJECTS sb,
STUDENTS s,
SUBJECTS b
WHERE s.ID = sb.STUDENT_ID
AND b.ID = sb.SUBJECT_ID
GROUP BY S.ID,S.NAME
HAVING MIN(SB.MARK)>=50