2012-10-15 22 views
0

我有一個數據庫表,有很多列,一個主鍵(icd_data_id)和一個外鍵(encounter_id)。Nhibernate和max(uniqueID)作爲三個標準之一?

我有應該只出現一次特定的標準,但由於過去的歷史,我不能肯定,只有一個符合該標準,因此,我想獲得的最後一個值記錄。

我不知道如何解決這個與我的映射文件和查詢。這是映射文件中類的一個子集。

<class name="Surgery"> 
<id name="ID" column="icd_data_id" type="Int32"> 
    <generator class="identity"/> 
</id> 

<property name="EncounterID" column="event_id" type="int" /> 
<property name="SpongeCountDone" column="sponge_removed" type="AnsiString" /> 

<more attributes here, excluded for brevity> 

<property name="Category" column="category" type="AnsiString" /> 
</class> 

我想要得到的是最大(icd_data_id)類別爲「XYZ」和EncounterID = 123

的類別值,我正在尋找將永遠是一成不變的,而是行EncounterID將 作爲從此表中獲取數據時代碼中的值。

如果我不清楚,在類別不是XYZ的表中有這種遇到ID的其他記錄,並且應該只有一個其中Category = XYZ的每個邂逅,但有可能會有不止一個。

有沒有人在這裏有如何寫三個標準的經驗?

回答

1

在記事本中這樣做,但它可以是這樣的:

var results = session.CreateQuery("from Surgery p where Category='XYZ' and EncounterID=123 and p.icd_data_id in ( select max(p2.icd_data_id) from Surgery p2 group by p2.icd_data_id)")