SQLITE3内部联接返回太多元组

时间:2017-11-04 15:57:35

标签: sql sqlite

我在sqlite3中有4个表:

students(student_id, student_name)
instructors(instructor_id, instructor_name)
courses(course_id, course_name)

enrollments(enroll_id, student_id, instructor_id, course_id)

最后3列具有前3个表中相关列的外键引用

当我尝试查询时,只显示学生的姓名,教师姓名和课程名称,其中enroll_id等于001,例如

SELECT students.student_name, instructors.instructor_name, courses.course_name
FROM users, instructors, courses INNER JOIN enrollments
WHERE enrollments.enroll_id = 001;

我从所有表中获取了大量数据,但没有一个元组只有相关的注册数据分配给enroll_id 001.感谢任何帮助

2 个答案:

答案 0 :(得分:1)

试试这个:

SELECT students.student_full_name, instructors.instructor_name, courses.course_name
    FROM users, instructors, courses, enrollments
    WHERE enrollments.enroll_id = 001
      and enrollments.student_id = users.student_id
      and enrollments.instructor_id = instructors.instructor_id
      and enrollments.course_id = courses.course_id;

答案 1 :(得分:1)

从不FROM子句中使用逗号。 始终使用正确的,明确的JOIN语法。表达此查询的正确方法是:

SELECT s.student_full_name, i.instructor_name, c.course_name
FROM enrollments e JOIN
     instructors i
     ON e.instructor_id = i.instructor_id JOIN
     courses c
     ON e.course_id = c.course_id JOIN
     students s
     ON e.student_id = s.student_id
WHERE e.enroll_id = 001;

强烈建议使用表别名。它使查询更容易编写和阅读。