我的数据库中有两个表students
:
GRADE_REPORT:
+----------------+-------------+------+
|Student_No . | SectionId | Grade|
+----------------+-------------+------+
| 11 | 85 | B |
| 17 | 112 | B |
| 17 | 119 | C |
| 17 | 135 | A |
| 8 | 85) | A |
| 8 | 92 | A |
+----------------+-------------+------+
Run Code Online (Sandbox Code Playgroud)
学生:
+----------------+-------------+------+--------+----------------+
| Studentnumber | name | Classification| DepartmentName |
+----------------+-------------+---------------+----------------+
| 17 | Bill Smith | 1 | CS |
| 8 | Bob Brown | 2 | CS |
| 11 | Nick Fiener | 4 | MATH |
+----------------+-------------+------+-----+---------+---------+
Run Code Online (Sandbox Code Playgroud)
我正在尝试查找所有在任何课程中都没有获得 A 成绩的学生的学号、姓名和主要部门。因此,当我运行查询时,我期待以下内容:
+----------------+-------------+----------------+
| Studentnumber | name | DepartmentName |
+----------------+-------------+----------------+
| 11 | Nick Fiener | MATH |
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我的声明:
SELECT students.STUDENT.StudentNumber, students.STUDENT.name,
students.STUDENT.DepartmentName
FROM students.GRADE_REPORT
INNER JOIN students.STUDENT
ON students.GRADE_REPORT.StudentNo = students.STUDENT.StudentNumber
WHERE
( (students.GRADE_REPORT.Grade = "B"
OR
students.GRADE_REPORT.Grade = "C" )
AND students.GRADE_REPORT.Grade != "A")
GROUP BY students.GRADE_REPORT.StudentNo;
Run Code Online (Sandbox Code Playgroud)
SELECT Studentnumber, name, DepartmentName
FROM Student AS s
WHERE NOT EXISTS (
SELECT 1
FROM Grade_Report
WHERE Studentnumber = s.Studentnumber
AND Grade = 'A'
)
Run Code Online (Sandbox Code Playgroud)