三张表单表外键关联另外两表,如何查询用户选择的课程?
查询用户所选课程语句实现
- 存在
users(用户表,主键id)、classes(课程表,主键id)、userclasses(用户选课关联表)三张表 userclasses的userId字段关联users.id,classId字段关联classes.id,用于记录用户的选课关系
表结构参考:
查询指定用户的所有选课信息
如果仅需要返回课程相关信息,直接关联关联表和课程表即可,将语句中<目标用户ID>替换为实际查询的用户ID即可执行:
SELECT classes.* FROM classes JOIN userclasses ON classes.id = userclasses.classId WHERE userclasses.userId = <目标用户ID>;
如果需要同时返回用户基础信息+对应的选课信息,关联三张表即可:
SELECT users.*, classes.* FROM users JOIN userclasses ON users.id = userclasses.userId JOIN classes ON userclasses.classId = classes.id -- 可选:添加筛选条件查询指定用户 -- WHERE users.id = <目标用户ID>
如果课程表有软删除、状态类字段,可自行在WHERE条件中追加过滤规则,例如追加AND classes.is_deleted = 0即可仅查询未删除的有效课程。
内容的提问来源于stack exchange,提问作者Alibi Tolebay
相关产品推荐
相关产品推荐

