【发布时间】:2019-04-22 12:40:40
【问题描述】:
我有一个表格,其中包含当前注册的所有学生的详细信息,如下所示:
CREATE TABLE studentInClass(
studentID int,
classID int,
FOREIGN KEY(studentID) references students(studentID),
foreign key(classID) references class(classID)
);
还有一张表,其中包含已支付课程费用的学生的详细信息:
CREATE TABLE fees(
feesID INTEGER PRIMARY KEY AUTOINCREMENT,
StudentID INTEGER,
AmountPaid INT,
Date DATE,
FOREIGN KEY(StudentID) REFERENCES students(StudentID));
我想要做的是检查某个班级的学生是否没有支付该班级的费用。我正在努力编写一个这样做的 SQL 查询。我尝试了多个查询,例如:
Select studentInClass.StudentID
from fees, studentInClass
where fees.StudentID = studentInClass.StudentID;
但这不会返回任何数据。我不知道如何从这里开始。任何帮助将不胜感激。
【问题讨论】:
-
你怎么知道收费是针对特定课程的?我在费用表中没有看到任何对课程的引用。
-
同意@stickybit。如果您只关心学生是否支付了任何金额,您可以使用简单的
LEFT JOIN然后WHERE fees.StudentID IS NULL因为如果学生出现在studentInClass但没有出现在@987654327 @ 会将NULL分配给正确的表。