6.4 HQL
的多表查询
对象之间总是有各种各样的关系,关联关系是类之间最常见的关系。多
表查询是
HQL
中的强大功能之一,包括内连接、左连接和右连接等。多
表查询的设置及运行都比较麻烦,在运行本节中的示例时,务必保证每
一步都没有错误。
6.4.1
表之间的关联关系
在数据库
joblog
中用到了
3
个表:
student
(学生表)、
course
(课程
表)和
sc
(选课表)。这些表的详细信息见
6.1.1
节“示例中用到的默
认数据库表和数据”。在现实模型中,一个学生可以选择多门课程,一
个课程可以被多个学生选择,
student
和
course
是多对多的关联关系。
为了便于演示
HQL
的多表查询,
本节中假设
student
和
course
之间是单
向关联关系。
在多对多的关联关系中,一般来说有个中间表,这个表描述了多对多关
系,这就是选课表
sc
,
sc
每一行数据代表一个学生的选课和成绩。
各个表的主键、外键设置如下。
student
表的主键是
id
字段。
course
表的主键是
id
字段。
sc
表的主键是
id
字段。
sc
表中的
Sno
字段是
student
表
id
字段的外键。
sc
表中的
Cno
字段是
course
表
id
字段的外键。
图
6-8
是
3
个表之间关系的直观表示。