1

つまり、2つのテーブルがあります。1 つはコースのリストのテーブル ( courses) で、もう 1 つは、登録されているコースのリストのテーブル ( 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 つのテーブルで主キー/外部キーを指定して、それらが存在する場合に別のテーブルで表示することはできますか?

4

1 に答える 1

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)
于 2012-10-31T23:46:04.667 に答える