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