3
我有以下域映射:如何查詢使用相關子查詢的聚合值?
Person
------
int PersonId
IList<PersonDetails> Details;
PersonDetails
-------------
Person Owner (mapped by using the FK field, PersonId)
string Name
string Address
DateTime UpdateDate
翻譯成一個類似的表結構:
Person
------
PersonId (int)
Birthday (date)
PersonDetails
-------------
PersonId (FK, integer)
Name (string)
Address (string)
UpdateDate (date)
我如何重新使用QueryOver下面的SQL查詢?
SELECT *
FROM Person p INNER JOIN Details d ON p.PersonId = d.PersonId
WHERE d.UpdateDate = (SELECT MAX(UpdateDate)
FROM PersonDetails
WHERE PersonId = p.PersonId);
即,爲每個人選擇最新的PersonDetails。 我見過的例子,但他們都沒有涉及到使用aggregae值相關子查詢的...
感謝, 哈雷爾
對不起,你的餐桌關係是OneToMany,對嗎? – Faber 2011-04-04 17:51:31
哦,對不起,我忘了這個細節 - 映射確實是一對多的關係,因爲Person可以「擁有」許多PersonDetails對象。 – 2011-04-04 21:35:26
對不起,但我還沒有找到你的查詢的解決方案,但是...如果你使用流利的NHibernate映射你的表到你的模型,如果你對Person和PersonDetails的查詢總是使用SELECT MAX(UpdateDate)也許我有一個想法:-) – Faber 2011-04-06 09:30:52