3

結合を使用してクエリを実行する方法。私はデータベースが初めてです。このクエリは正常に機能しています。しかし、もっと堅牢にしたいです。

   $query = "SELECT student_id 
FROM students
WHERE student_id
IN (
    SELECT student_id
    FROM class_students
    WHERE class_id
        IN (
            SELECT class_id
            FROM class_course
            WHERE teacher_id =". $_SESSION['teacher_id']."))";

それを行う他の方法はありますか

4

3 に答える 3

5

使用INは適切な結合に変換できます。

SELECT s.student_id 
FROM students s
JOIN class_students cs ON cs.student_id = s.student_id
JOIN class_course c ON c.class_id = cs.class_id
WHERE teacher_id = ?

(無関係な)アプリケーション言語の詳細(perl?)を削除して、質問に答えるSQLだけを残していることに注意してください。

于 2013-01-11T00:18:59.757 に答える
1
$query = "select students.student_id
from class_course left outer join class_students on 
        class_course.class_id = class_students.class_id
    left outer join students on 
        class_students.student_id = students.student_id
where class_course.teacher_id = ". $_SESSION['teacher_id']
于 2013-01-11T00:18:22.047 に答える
1
  $query = "SELECT s.student_id 
FROM students s
    INNER JOIN class_students cs
        ON s.student_id = cs.student_id
    INNER JOIN class_course cc
        ON cs.class_id = cc.class_id
            AND cc.teacher_id =". $_SESSION['teacher_id']."))
于 2013-01-11T00:19:46.307 に答える