Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用联接优化查询_Mysql_Sql_Join_Refactoring - Fatal编程技术网

Mysql 使用联接优化查询

Mysql 使用联接优化查询,mysql,sql,join,refactoring,Mysql,Sql,Join,Refactoring,如何使用联接完成查询。我是数据库新手。这个查询运行良好。。 但我想让它更鲁布斯特 $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

如何使用联接完成查询。我是数据库新手。这个查询运行良好。。 但我想让它更鲁布斯特

   $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']."))";

是否有其他方法可以将使用中的

转换为正确的联接:

$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']
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。

Yes。参见连接。这就是他们的目的。这里有一个关于和
  $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']."))