请教一个关于学生选课的问题

oodick 2010-02-03 04:57:59
大体是这样
学生可以选多门课程, 一门课程也可以被多个学生选

同时,我这里规定一个老师只能教一门课程 这个是一个一对一的关系

学生和课程是一个多对多的关系, 我把他拆分成2个多对一了,用一个中间表 t_kc_info来保存关联关系

t_kc_info:
+----+------+------+
| id | sid | kid |
+----+------+------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 1 | 4 |
| 5 | 2 | 4 |
| 6 | 2 | 5 |
| 7 | 3 | 1 |
| 8 | 1 | 6 |
+----+------+------+

其中 sid 为学生的ID,kid为课程的ID

现在的问题是
我如何才能查询出,被学生 选学 最多的课程的 名称?课程表为t_kecheng ,字段ID,name 学生表和老师表类似


请教大家了 谢谢
...全文
69 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2010-02-03
  • 打赏
  • 举报
回复
select *
from t_kecheng
where (select count(*) from t_kc_info where kid=t_kecheng.id)
= (select max(cnt) from (
select kid,count(*) as cnt
from t_kc_info
group by kid
) t
)
oodick 2010-02-03
  • 打赏
  • 举报
回复
感谢楼上大哥帮忙 太感谢了 能留下QQ吗
我想以后多请教下SQL 方面的技术问题 这方面我太菜了 谢谢
oodick 2010-02-03
  • 打赏
  • 举报
回复
楼主这个有点小BUG啊 ,如果有2门课程被选学的次数是一样的,我也需要将他查询上来,你这个只能查询一个
ACMAIN_CHM 2010-02-03
  • 打赏
  • 举报
回复
select name
from (
select t_kecheng.name,count(*) as cnt
from t_kc_info , t_kecheng
where t_kc_info.kid=t_kecheng.id
group by t_kecheng.name
) t
order by cnt desc limit 1;

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧