SQL查看一个学生的所有课程

时间:2015-02-20 10:07:32

标签: mysql sql select foreign-keys

我有3张桌子

table_student
ID,名字,姓氏

table_courses
ID,course_name

table_student_course
ID,student_ID,course_ID,date_taken

我想要做的就是按ID = 1

的学生列出course_name和date_taken的所有课程

有人请吗?

3 个答案:

答案 0 :(得分:5)

您需要使用JOINtable_courses表格上的table_student_course,然后在Order By上应用cource_name按课程名称进行排序。选择特定学生时应用Where子句作为过滤器。

  SELECT 
      t.course_name,
      tsc.date_taken 
  FROM 
      table_courses t INNER JOIN table_student_course tsc
          ON t.ID = tsc.course_ID
  WHERE
      tsc.student_ID = 1
  ORDER BY 
       t.course_name

如果您还想从查询中获取学生详细信息,则需要加入以下3个表格,

SELECT s.firstname, s.lastname, c.course_name, sc.date_taken 
FROM table_courses c 
INNER JOIN table_student_course sc ON c.ID = sc.course_ID
INNER JOIN table_student s ON sc.student_ID = s.ID
WHERE sc.student_ID = 1
ORDER BY c.course_name

答案 1 :(得分:1)

在表格“table_courses”&上使用内部联接“table_student_course”我们选择两个表中的所有行,只要两个表中的列之间存在匹配,确保ID相同。如果满足条件(student_id = 1),则查询将返回预期的内容。

SELECT course_name, date_taken
FROM table_courses c INNER JOIN table_student_course sc ON c.id = sc.course_id
WHERE sc.student_ID = 1
ORDER BY course_name

答案 2 :(得分:1)

SELECT s.firstname, s.lastname, c.course_name, sc.date_taken 
FROM table_courses c 
INNER JOIN table_student_course sc ON c.ID = sc.course_ID
INNER JOIN table_student s ON sc.student_ID = s.ID
WHERE sc.student_ID = 1
ORDER BY c.course_name