我现在正在涉猎SQL,并希望能够帮助解决我所创造的问题。
要练习一些编程我正在制作一个IOU应用程序。下面是我存储的表格 我的IOU记录(忽略一些相关的列)。这个表允许用户说'嘿,你欠我X金额"和#34;我欠你X金额"。
| Creator | Type | User_Involved| Amount |
|:-----------|------------:|:------------:|
| 1 | 0 | 2 | 3.0
| 2 | 0 | 1 | 4.0
| 3 | 1 | 1 | 5.0
注意:类型表示用户是否已借出或要求提供资金"。 0 =借出 1 =请求
目标:我的目标是获取所有用户及其总欠款金额(负数或正数)的列表。
这已经变得非常困难,因为我不能做一个简单的小组,因为我需要分组两个列(Creator和User_Involved)。
我设法写了一个SQL查询,给出了正确的结果,但是我无法将其翻译成Hibernate版本。
问题主要归咎于JPA无法执行工会。
有问题的查询:
/** assumption 1 is owed to creator **/
select sum(owed_to_you) as owed_to_you, friend_id
from
(
/** you created **/
select sum(CASE WHEN transaction_type = 0 THEN -amount ELSE amount END) as owed_to_you, friend_involved as friend_id
from iou
where
creator = 3
group by friend_involved
union all
/** someone else created **/
select sum(CASE WHEN transaction_type = 1 THEN -amount ELSE amount END) as owed_to_you, creator as friend_id
from iou
where
friend_involved = 3
group by creator) as theunion
group by friend_id
除了将所有Ious加载到内存中并以这种方式对其进行排序外,我完全难过了。我今天做了很多研究并学到了很多东西,但是,我还没有取得进展。
非常感谢任何帮助。
答案 0 :(得分:1)
您可以单独执行这两个查询,并将结果合并为Java代码。