我有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的所有课程有人请吗?
答案 0 :(得分:5)
您需要使用JOIN
和table_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