【发布时间】:2013-10-29 18:02:17
【问题描述】:
我正在尝试通过查询对一些数据求和。它是一个相当复杂的 sql 查询,涉及复杂的关系,我想将其转换为 HQL。
我将使用数据关系的简化版本来简化讨论。
那我怎么能把它翻译成 HQL 呢?在 HQL 中是否可以查询查询?
示例:
假设我们有一个影评人在线评论电影,我们想要返回他评论的电影数量、他喜欢的电影数量和他讨厌的电影数量的总数。
表格:
- 评论家
- 电影
- 评论(评论家和电影与 LoveFlag 之间的链接表,如果 LoveFlag 是假的,他讨厌这部电影)
SQL 查询:
(这是一个虚构的场景,我正在研究的解决方案是用于设施管理。我在堆栈溢出时编写了这个查询,所以它很可能存在缺陷。)
选择评论家Summary.id , COUNT(criticSummary.reviewId) 作为 totalReviews , SUM(criticSummary.isLoved) 作为 totalLoved , SUM(criticSummary.isHated) as totalHated
来自(
SELECT DISTINCT critic.id AS id, review.id AS reviewId, review.isLoved AS isLoved, CASE WHEN review.isLoved = 1 THEN 0 ELSE 1 END AS isHated FROM [critic] critic INNER JOIN [review] review ON ( review.criticId = critic.id AND review.active = 1 ) WHERE critic.active = 1) 作为评论家总结
按评论家Summary.id 分组
【问题讨论】: