我有三张桌子:
class
、student
和teacher
table class
{
class_id(PK)
}
table student
{
student_id(PK)
class_id(PK+FK)
}
table teacher
{
teacher_id(PK)
class_id(PK+FK)
}
我有一个 SQL 查询,运行良好。
SELECT data.class_id, count(data.class_id) AS count
FROM ((SELECT class_id FROM student)
union all
(SELECT class_id FROM teacher)) AS data
GROUP BY data.user_id
ORDER BY count desc
查询包含
from
子句和union
操作中的子查询。
我无法将其转换为 HQL。
请给我上面 SQL 查询中的高效 HQL 查询。
不幸的是HQL不支持UNION查询。解决您的问题的两种替代策略是:
Student
继承的抽象 Teacher
超类的 每个具体类的表策略似乎很适合您的问题:
select p.id, count(c)
from Person p join p.classes c
group by p.id
order by count(c) desc
您不能在 HQL 中的
from
子句中放置子查询。仅 select
或 where
子句。