如果象你所做的基本描述,你可以考虑在这个数据库中建立两个分别与你所说的两种表格T1(车间代码,班组代码,....具体资料),T2(车间代码,班组代码,....具体资料),另外还可建立两个表分别对应车间与班组信息,比如T3(车间代码,车间名称,...车间具体资料)、T4(班组代码,班组名称,...班组具体资料)。这样一来,无论你是否需要对车间或班组的数进行增加多少,你都可以在表T1和T2中可以清楚地了解到一条记录所描述的是哪一个车间哪一个班组的资料。当然,我所说的只是泛泛,具体操作还要看你表关系是一对多还是一对一的...这会直接影响表结构的设计。
这样在程序中就可以用CJ和BZ代号检索出某车间某班组的一种表格。不过还有一些细节还没想清楚,我还得继续研究一下。
id pid 名称 性质 ...
1 0 单位 单位
2 1 车间1 车间
3 1 车间2 车间
4 2 组1 班组
5 2 组2 班组数据表
id 单位id 其他...
1 1 内容
2 5 内容
树形数据处理http://expert.csdn.net/Expert/topic/2285/2285830.xml?temp=.7490656
第一表結構:
ID, 單位, 每個車間, 每個班組...都要編一個獨立的號碼
ID_LEVEL, 分單位,車間,班組...等級
SUBID1, 下屬的第一個獨立號碼
SUBID2, 下屬的第二個獨立號碼
HEAD_ID, 上級部門的獨立號碼
ID_1_2, 分1或2, 即是上級的第一個還是第二個.
此表中可以輸入基本結構圖. 例如
ID ID_LEVEL 名稱 SUBID1 SUBID2 HEAD_ID ID_1_2
001 單位 單位名稱 A01 A02
A01 車間 車間名稱 B01 B02 001 1
A02 車間 車間名稱 C01 C02 001 2
B01 班組 班組名稱 A01 1
B02 班組 班組名稱 A01 2
C01 班組 班組名稱 B01 1
...
此表可以隨意加上多層級別第二表:
ID, DESC
此表可以輸入各ID的活動內容此表的要求: 單位, 各車間, 各班組都必須使用唯一的統一編號.
建立存储过程:CREATE PROCEDURE spGetTree ( @ID int)asset nocount ondeclare @tmp table (Id int,ConText varchar(50),ParentID int,depth int)insert @tmp select * from tbtree where ID=@IDwhile exists(select 1 from tbtree a,@tmp b where a.ParentID=b.ID and a.ID not in (select ID from @tmp)) insert @tmp select a.* from tbtree a,@tmp b where a.ParentID=b.ID and a.ID not in (select ID from @tmp)select * from @tmpset nocount offGO