You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP+MySQL实现已分配课程用户查看功能及SQL查询语法问题

获取用户已分配课程的SQL查询方案

没问题,我来帮你搞定这个SQL查询的问题!看起来你已经把表结构设计得很清晰了——用assigned_courses关联表来维护用户和课程的多对多关系,这是非常标准的做法。下面我会给你几种常用的查询写法,适配不同的场景:

1. 基础查询:获取单个用户的所有已分配课程

如果你想查询某个特定用户的已分配课程资料和测试,用INNER JOIN关联三个表即可,通过外键把用户、关联表、课程表串起来:

-- 替换其中的用户ID和字段名,匹配你的实际表结构
SELECT 
  u.user_id, 
  u.username, -- 替换成你user表中的用户名字段
  c.course_id, 
  c.course_title, -- 替换成你course表中的课程标题字段
  c.course_content -- 替换成你存储课程资料/测试内容的字段
FROM user u
JOIN assigned_courses ac ON u.user_id = ac.user_id
JOIN course c ON ac.course_id = c.course_id
WHERE u.user_id = 1001; -- 替换成你要查询的目标用户ID

这个查询会返回该用户所有已分配的课程详情,只有当用户确实有分配课程时才会返回结果。

2. 查询所有用户的已分配课程

如果需要一次性查看所有用户的课程分配情况,去掉WHERE条件即可:

SELECT 
  u.user_id, 
  u.username,
  c.course_id, 
  c.course_title,
  c.course_content
FROM user u
JOIN assigned_courses ac ON u.user_id = ac.user_id
JOIN course c ON ac.course_id = c.course_id;

3. 过滤课程类型(资料/测试)

如果你的course表中有区分课程类型的字段(比如course_type,值为material或test),可以在查询中添加过滤条件,只获取课程资料或者测试:

-- 只获取用户的测试课程
SELECT 
  u.user_id, 
  u.username,
  c.course_id, 
  c.course_title,
  c.course_content
FROM user u
JOIN assigned_courses ac ON u.user_id = ac.user_id
JOIN course c ON ac.course_id = c.course_id
WHERE u.user_id = 1001
  AND c.course_type = 'test'; -- 换成'material'即可查询课程资料

4. 包含无课程分配的用户

如果你想展示所有用户,即使是没有分配任何课程的用户,可以用LEFT JOIN代替INNER JOIN,这样无课程的用户会显示用户信息,课程字段为NULL:

SELECT 
  u.user_id, 
  u.username,
  c.course_id, 
  c.course_title,
  c.course_content
FROM user u
LEFT JOIN assigned_courses ac ON u.user_id = ac.user_id
LEFT JOIN course c ON ac.course_id = c.course_id
WHERE u.user_id = 1001;

小提示

  • 记得把示例中的字段名替换成你实际表中的字段(比如username、course_title这些,根据你的表结构调整)
  • 如果assigned_courses表有额外字段(比如分配时间assigned_at),也可以加到SELECT语句里,方便查看分配记录

内容的提问来源于stack exchange,提问作者user3328625

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:00:35