大体是这样
学生可以选多门课程, 一门课程也可以被多个学生选
同时,我这里规定一个老师只能教一门课程 这个是一个一对一的关系
学生和课程是一个多对多的关系, 我把他拆分成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 学生表和老师表类似
public class Student { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
public class KCInfo { private int id; private Student stu; private Kecheng kc; public int getId() { return id; } public void setId(int id) { this.id = id; } public Student getStu() { return stu; } public void setStu(Student stu) { this.stu = stu; } public Kecheng getKc() { return kc; } public void setKc(Kecheng kc) { this.kc = kc; } }
<hibernate-mapping> <class table="t_kc_info" name="test"> <id name="id"> <generator class="native"/> </id> <many-to-one name="stu" column="sid"></many-to-one> <many-to-one name="kc" column="kid"></many-to-one> </class> </hibernate-mapping>
以上是主体的代码,请教大家帮忙分析下SQL语句和HQL如何编写 谢谢