問題描述:
實現對商品資訊的分類,分類的同時生成乙個序號。
序號的規則就是取他所屬的類的序號+同一類別的排序號)
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...