0
我現在正在涉足SQL,希望對我創建的問題有所幫助。休眠查詢 - 複雜
要練習一些編程我正在做一個借條應用程序。以下是我存儲 我的IOU記錄(忽略一些相關列)的表。這張表允許用戶說「嘿,你欠我X金錢」和「我欠你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
除了加載所有白條到內存和排序這樣的說法,我完全難倒。我今天做了很多研究,並且學到了很多東西,但是,我仍然沒有取得進展。
任何幫助將不勝感激。
Fyi JPA允許使用實體管理器調用本機SQL查詢。 – Mordechai