我在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.感谢任何帮助
答案 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;
强烈建议使用表别名。它使查询更容易编写和阅读。