我有两个不同的表学生和成绩; 成绩表有一个属性student_id,它从学生表中引用student_id.我怎样才能找到哪个学生的成绩?
如果不清楚,
Student ID Name
1 1 John
2 2 Paul
3 3 George
4 4 Mike
5 5 Lisa
Grade Student_Id Course Grade
1 1 Math A
2 1 English B
3 1 Physics C
4 2 Math A
5 2 English A
6 2 Physics B
7 3 Economics A
8 4 Art C
9 5 Biology A
Assume there is only grade a,b,c (no d, e or fail)
Run Code Online (Sandbox Code Playgroud)
我只想找到John,因为他有a,b,c等级,而其他学生如Paul(2)不应该被选中,因为他没有成绩c.无论他选择哪个课程都没关系,我只需要找出他是否有可用的所有成绩.
感觉像我应该存在的东西或所有功能在SQL但不确定.请帮忙.先感谢您.
我会用GROUP BY和HAVING,但这样的:
SELECT s.Name
FROM Student s JOIN
Grade g
ON s.ID = g.Student_Id
GROUP BY s.id, s.Name
HAVING COUNT(DISTINCT g.Grade) = (SELECT COUNT(DISTINCT g2.grade) FROM grade g2);
Run Code Online (Sandbox Code Playgroud)
你说"那里的所有等级",所以查询不应该使用常量.
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |