mySQL:如何处理3个不同的表,在每个表中引用不同的列,但使用主键
我试图找出哪些学校的学生在2018年没有完成考试。所以我设置了三个表:mySQL:如何处理3个不同的表,在每个表中引用不同的列,但使用主键,mysql,sql,join,foreign-keys,primary-key,Mysql,Sql,Join,Foreign Keys,Primary Key,我试图找出哪些学校的学生在2018年没有完成考试。所以我设置了三个表:testfo,ExamEntry和学生。我将尝试使用testfo表从Students表中获取信息,但我显然只想要2018年未完成考试的学生信息。注:我正在寻找参加考试的学生,尽管他们没有完成考试,但通过这项考试,你可以将已完成的考试视为通过考试 在ExamInfo中,我有以下列: ExamInfo_Date --when exam took place, using to get year() condition ExamIn
testfo
,ExamEntry
和学生
。我将尝试使用testfo
表从Students
表中获取信息,但我显然只想要2018年未完成考试的学生信息。注:我正在寻找参加考试的学生,尽管他们没有完成考试,但通过这项考试,你可以将已完成的考试视为通过考试
在ExamInfo
中,我有以下列:
ExamInfo_Date --when exam took place, using to get year() condition
ExamInfo_ExamNo --unique student exam ID used to connect with other tables
ExamInfo_Completed --1 if completed, 0 if not.
...
在ExamEntry
中,我有相关列:
ExamEntry_ExamNo --connected to ExamInfo table
ExamEntry_StudentId --unique studentId used to connect to Students table
ExamEntry_Date -- this is same as ExamInfo_Date if any relevance.
...
在学生
中,我有以下栏目:
Students_Id --this is related to ExamEntry_StudentId, PRIMARY KEY
Students_School --this is the school of which I wish to be my output.
...
我希望我的输出仅仅是一份2018年学生未完成考试的所有学校的列表。虽然我的问题是如何从考卷表中找出学生没有完成考试的学校
到目前为止,我已经:
SELECT a.Students_School, YEAR(l.ExamInfo_Date), l.ExamInfo_Completed
FROM ExamInfo l ??JOIN?? Students a
WHERE YEAR(l.ExamInfo_Date) = 2018
AND l.ExamInfo_Completed = 0
;
我甚至不确定是否需要查看考试表。我确信我注定要使用连接,但不确定如何正确使用它。此外,对于我的3个不同的SELECT列,我只希望输出Students_School列:
Students_School
---------------
Applederry
Barnet Boys
...
显然,您需要一个连接
——实际上是两个。您的表包含考试、学生和表示这些实体之间多对多关系的连接/关联表
因此,我希望FROM
子句如下所示:
FROM ExamInfo e JOIN
ExamEntry ee
ON ee.ExamEntry_ExamNo = e.ExamNo JOIN
Students s
ON ee.ExamEntry_StudentId = s.Students_Id
那个连接中的ON子句呢?