假设有三张表:学生表(students)、课程表(courses)和选课表(selections),其中学生表包含学生的姓名和学号,课程表包含课程的名称和编号,选课表包含学生选修课程的信息。选课表中的每一行记录都包含一个学生的学号和一个课程的编号,表示该学生选修了该课程。
首先需要查询出“以数据库作为先行课”的课程的编号,然后使用多表连接查询出选修了这门课程的学生的姓名和学号。下面是一个示例SQL语句:
```sql
SELECT students.name, students.id
FROM students
JOIN selections ON students.id = selections.student_id
JOIN courses ON selections.course_id = courses.id
WHERE courses.name = '以数据库作为先行课';
```
解释一下上述SQL语句的关键部分:
1. 使用JOIN关键字将学生表、选课表和课程表连接起来,其中学生表和选课表通过学生的学号进行连接,选课表和课程表通过课程的编号进行连接。
2. 使用WHERE子句过滤出课程名称为“以数据库作为先行课”的记录。
3. 最终查询出学生的姓名和学号。