樹結構獲取資料問題

2022-04-07 10:22:44 字數 1457 閱讀 5593

系統結構如圖:

功能要求:

1.統計單位面積用電量

2.統計人均用電量

建築表結構(region)

regionid

name

parentid

電表結構(device)

deviceid

name

parentid

regionid

關於建築的面積和人數的設定問題:

開始時候想如果建築節點沒有子節點則提示使用者錄入面積和人數,如果有子節點則不允許錄入面積和人數,該節點的面積和人數通過其子節點的資料彙總。這樣存在乙個問題是使用者在新增乙個節點的時候需要指定該節點是否有子節點,這一點很不方便,同時如果子節點修改乙個資料則其所有上級節點都要update,還有就是父節點的面積和人數資料無法修改。

於是做成每個節點都要求使用者錄入面積和人數資料。資料的準確性未作校驗(可能會出現父節點的面積比子節點的面積總和小的情況,這個需要使用者在錄入資料的時候注意)。

頁面前端採用easyui的combotree設計。提示使用者勾選需要統計的區域。

例如勾選了2樓和401房間,則統計的區域和電表應該如下

之前在combotree中勾選後是直接將所有勾選的區域節點傳到後台處理

應該這樣處理:

1.獲取區域面積和人數

從前台傳入勾選的最上級區域節點,這裡通過遍歷所有勾選的節點實現。

function

getcheckednodes()

});if (!exist)

} }

else

});//$.each(nodes,

function

(i,val) );

}

2.獲取電表讀數

a.先獲取傳入區域下所有電表

select

*from device where regionid in (@regions)--

@regions是處理過的前台傳入的區域佇列

b.選擇那些parentid不在集合裡的電表

select

*from 集合 where parentid not

in 集合

結合兩點可以這樣寫

width td as

(select deviceid from device where regionid in (@regions))

select

*from td where parentid not

in td

然後與資料表關聯查詢出用電量,再做後續處理。

獲取樹結構資料

public function getrolefields result self formatfileds hrmauthfuncfieldmaps,0 return result public function formatfileds hrmauthfuncfieldmaps,fatherid...

資料結構 樹結構

樹結構以一種 一對多 的資料關係。樹的結點 結點 樹結構的每乙個元素都可以被稱為乙個節點。父結點 a結點是b,c的父結點 子結點 b,c是a的子結點 根結點 a是樹的根結點,每乙個非空的樹結構中只有乙個根結點 q 如何判斷某個結點是否是根結點?a 根結點沒有父節點 葉子結點 d,e,f是葉子結點,葉...

搞懂資料結構 樹結構

樹結構是一種非常重要的非線性結構,反應了資料元素之間的層次關係和分支關係。樹的表示方法 根據樹中節點的各子樹從左到右是否有次序,能否交換分為 二叉樹並非是樹的特殊情形,它和度數為2的有序樹是兩種不同的資料結構。二叉樹的儲存結構可分為順序儲存和鏈式儲存。順序儲存 二叉樹的順序儲存結構就是把二叉樹的所有...