典型樹型選單問題解決

2021-08-25 03:35:53 字數 2982 閱讀 5160

問題描述:

實現對商品資訊的分類,分類的同時生成乙個序號。

序號的規則就是取他所屬的類的序號+同一類別的排序號)

scb_subject

classid classname fatheridscblevel

1蔬菜-101

2茄子 10101

3白菜 10102

4蘿蔔 10103

5布匹-102

6服裝 50201

7** 6020101

8女上衣 702010101

9** 6020102

如果現在表裡面的scblevel都是空的。

解決方案:

–測試資料

create table t(classid varchar(3),fatherid varchar(3),classname nvarchar(10),scblevel varchar(20))

insert t select 『1′,』-1′ ,』蔬菜』,null

union all select 『2′,』1′,』茄子』,null

union all select 『3′,』1′,』白菜』,null

union all select 『4′,』1′,』蘿蔔』,null

union all select 『5′,』-1′ ,』布匹』,null

union all select 『6′,』5′,』服裝』,null

union all select 『7′,』6′,』**』,null

union all select 『8′,』7′,』女上衣』,null

union all select 『9′,』6′,』**』,null

–深度排序顯示處理

–生成每個節點的編碼累計(相同當單編號法的編碼)

declare @t_level table(classid varchar(3),level int,sort varchar(8000))

declare @level int

set @level=0

insert @t_level select classid,@level,』0′+classid

from t

where fatherid = -1

while @@rowcount>0

begin

set @level=@level+1

insert @t_level select a.classid,@level,b.sort+』0′+a.classid

from t a,@t_level b

where a.fatherid=b.classid

and b.level=@level-1

end—先更新原表的scblevel編號

update t

set scblevel=a.sort

from t inner join (

select top 100 percent a.classid,b.sort,a.classname

from t a,@t_level b

where a.classid=b.classid

order by b.sort) a on t.classid=a.classid

—重新排列scblevel編號

update t set

scblevel=』0′+right(–重排第一層編碼

(select count(distinct scblevel) from t where scblevel<=a.scblevel and len(scblevel)=2),2)

+case –重排第二層編碼

when len(scblevel)>2

then right(100+

(select count(distinct scblevel) from t where scblevel<=a.scblevel and scblevel like left(a.scblevel,2)+』__』),2)

else 」 end

+case –重排第三層編碼

when len(scblevel)>4

then right(100+

(select count(distinct scblevel) from t where scblevel<=a.scblevel and scblevel like left(a.scblevel,4)+』__』),2)

else 」 end

+case –重排第四層編碼

when len(scblevel)>6

then right(100+

(select count(distinct scblevel) from t where scblevel<=a.scblevel and scblevel like left(a.scblevel,4)+』__』),2)

else 」 end

+case –重排第五層編碼

when len(scblevel)>8

then right(100+

(select count(distinct scblevel) from t where scblevel<=a.scblevel and scblevel like left(a.scblevel,4)+』__』),2)

else 」 end

from t a

–顯示處理結果

select * from t

drop table t

classid fatherid classnamescblevel

——- ——– ———- ——————–

1 -1 蔬菜 01

2 1茄子 0101

3 1白菜 0102

4 1蘿蔔 0103

5 -1 布匹 02

6 5服裝 0201

7 6** 020101

8 7女上衣 02010101

9 6** 020102

(9 row(s) affected)

典型樹型選單問題解決

問題描述 實現對商品資訊的分類,分類的同時生成乙個序號。序號的規則就是取他所屬的類的序號 同一類別的排序號 scb subject classid classname fatherid scblevel 1 蔬菜 1 01 2 茄子 1 0101 3 白菜 1 0102 4 蘿蔔 1 0103 5 ...

oom問題解決

dalvik虛擬機會為應用程式分配固定大小的heap 如果使用超過了這個heap的大小,且沒有可被 物件,就會報oom。多張較大會迅速占用空間造成oom。我們可以使用一下的方法來減少這種情況的產生 1.減少單張的大小,根據螢幕大小來對bitmap做resize。private void setima...

too many open files問題解決辦法

今天用 往liunx中寫檔案,檔案很多 執行一會就日誌上就報錯 too many open files 結果找了半天才解決這個問題,現在給大家分享一下。首先用 ulimit a 命令看看linux的open files值是多少,結果乙隻有1024,不夠用的。然後修改linux的配置檔案,修改 etc...