你应该发布你的尝试,这样我们就可以看到你尝试了什么,以及你在哪里遇到了问题。 你想在这里表演的是 LEFT JOIN ,使用student id作为主键和外键来链接表之间的数据。您希望将您的条件放在join语句中,该语句将课程表与其他两个表连接起来,以便课程只显示给活动的学生。如果你把 WHERE 最后,你会过滤掉所有的行,如果你只想从活跃的学生那里检索所有的东西,这是很有用的,完全过滤掉不活跃的学生。 这是sql:
SELECT
tbl_student.id,
tbl_student.name,
tbl_student_course.course as course,
tbl_current_state.state as state
FROM
tbl_student
LEFT JOIN
tbl_current_state ON tbl_student.id = tbl_current_state.id
LEFT JOIN
tbl_student_course ON tbl_current_state.id = tbl_student_course.id AND tbl_current_state.state = 'Active'
ORDER BY
tbl_student.id ASC
您可以添加 active 作为你加入的标准。那么 left join studentcourse中的id到studentstate中的id。 演示
SELECT s.studentno
, s.studentname
, sc.course
FROM student s
LEFT JOIN studentstate ss
ON ss.studentno = s.studentno AND ss.currentstate = 'Active'
LEFT JOIN studentcourse sc
ON ss.studentno = sc.studentno
3条答案
按热度按时间ycggw6v21#
你应该发布你的尝试,这样我们就可以看到你尝试了什么,以及你在哪里遇到了问题。
你想在这里表演的是
LEFT JOIN
,使用student id作为主键和外键来链接表之间的数据。您希望将您的条件放在join语句中,该语句将课程表与其他两个表连接起来,以便课程只显示给活动的学生。如果你把WHERE
最后,你会过滤掉所有的行,如果你只想从活跃的学生那里检索所有的东西,这是很有用的,完全过滤掉不活跃的学生。这是sql:
工作sql fiddle
mrphzbgm2#
您可以添加
active
作为你加入的标准。那么left join
studentcourse中的id到studentstate中的id。演示
yquaqz183#
我使用t-sql,但如果我理解了你的意思,我认为你应该使用“left join”并在on子句中添加过滤条件。