2013-11-02 59 views
2

有什麼辦法如何在GT.M中按特定值排序結果集?GT.M訂單值

比方說,我有全球變量^人(姓名)=年齡,我想讓所有年齡在20到40歲之間的人按照年齡排序?

+2

創建一個索引,^ PeopleAgeIndex(年齡,名稱)= $我(以前的值)....這是否工作? – Yogesh

+1

嗨,謝謝你的建議!它工作完美。 但是如果我想得到這個人的名字和姓氏呢?我是否應該在你的索引中也包括姓氏?這是正確的解決方案?是不是它只是全局變量的副本而不是它的索引? – JustUser

+2

您可以按照Yogesh的建議進行操作,但在^ PeopleAgeIndex中包含名稱和姓氏。不幸的是,這確實會重複^ People全球。另一種選擇是在你的^全球人口中引入一個Age節點,例如^ People(姓名,年齡)=「」這樣你就可以通過全球所有名字命令$,並且姓氏在那裏20 <= age > = 40 – igotmumps

回答

1

編輯:對不起,以回答問題,而不是繼續評論鏈......我的權限級別還不足以評論此問題。

只要你不會有多個同名的人,但姓氏不同,Yogesh是正確的。最好使用索引來查找^ People的正確節點,然後從^ People中獲取所需的內容。但是,如果你有多個姓氏相同的人,但姓氏不同,那麼你會希望在^ PeopleAgeIndex子節點中包含姓氏。

+1

我覺得最好的方法來避免膨脹索引,同時仍然有適當的索引構建是使用unquie ID,就像你在SQL表中做的一樣,並且在索引中使用ID而不是名稱或其他任何東西。^People全球的第一層將是這個唯一的ID。獲取唯一ID的簡單方法就像前一個條目的$ i()一樣簡單。 – Yogesh

+1

同意。任何時候你與人打交道時,名字可能是索引任何東西最糟糕的方式(除非你是爲顯示目的排序)。這就是說,「年齡」也可能相當粗糙。出生日期通常會更好,因爲這不需要隨着時間的推移進行更新。 – FinrodFelagund

+1

我同意,存儲整數相當於DOB(自世紀以來的UTC秒)將會好得多。 – Yogesh