我的意思是我有2个表,一个是课程列表(courses
),第二个是我在(StudentCourseRegistration
)注册的课程表。我想知道如何发出我保存在StudentCourseRegistration
表中的主键CourseCode
,以便在我调用显示此表时隐藏course
表
所以如果行数据“CourseCode” - > CAD9047出现在registered
表中,然后在我调用courses
表时不显示它。当然,我不能硬编码我想要从该表中发出的确切课程代码,因此一旦该代码已经向该用户注册,它就会动态地改变。
查询是最好的方法吗?
这是我调用输出表的地方:
$string2012 = "SELECT Course.CourseCode, Course.Title, Course.WeeklyHours, Semester.Term, Semester.SemesterCode
FROM Course, CourseOffer, Semester, StudentCourseRegistration WHERE Semester.YearNum='$selectedYear' AND Course.CourseCode=CourseOffer.CourseCode
AND Semester.SemesterCode=CourseOffer.SemesterCode ";
if($Result2012 = mysqli_query($link, $string2012))
{
echo "<form action='CourseSelection.php' method='get'>
<table><tr><th>Code</th><th>Course Title</th><th>Hours</th><th>Term</th><th>Select</th></tr>";
while($row2012 = mysqli_fetch_assoc($Result2012))
{
echo "<tr><td>$row2012[CourseCode]</td><td>$row2012[Title]</td><td>$row2012[WeeklyHours]</td>
<td>$row2012[Term]</td><td><input type='checkbox' name='courses[]' value='$row2012[CourseCode]'></td></tr>";
}
echo "</table>";
}
我可以在一个表中指定主键/外键,如果它们存在,可以在另一个表中显示吗?
答案 0 :(得分:1)
SELECT *
FROM course c
WHERE c.coursecode
NOT IN(SELECT r.coursecode FROM studentcourseregistration r)
如果你这么做很多,你可能想要:
CREATE VIEW filtered_courses AS
SELECT *
FROM course c
WHERE c.coursecode
NOT IN(SELECT r.coursecode FROM studentcourseregistration r)