隐藏已经出现在MySQL表中的行的最简单方法是什么?

时间:2012-10-31 23:41:31

标签: php mysql row

我的意思是我有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>";
    }

我可以在一个表中指定主键/外键,如果它们存在,可以在另一个表中显示吗?

1 个答案:

答案 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)