请问yoki(小马哥),-个数据统计问题!

ls9d999999 2003-12-04 02:03:53
如何设计表结构便于treeview显示?



回答:


方法一:



一个表
字段如下:
id(自动编号)
fullname(文本)
parentID(长整)

parentid就是该种商品上一级的商品id

三个字段即可:
读取它的父ID即可反映关系

ID 名称 父ID
——————————————————
1 食品饮料类 0
2 饮料类 1
3 果汁类 2
4 山楂汁 3
5 柠檬汁 3
6 碳酸类 2
7 可口可乐 6
8 百事可乐 6
9 酒类 1
10 啤酒类 9
11 烟台啤酒 10
12 青岛啤酒 10
13 白酒类 9
14 茅台 13
15 五粮液 13
16 办公设备类 0
……





顶层的类别的parentID为Null


请问,我要进行数量统计时,用什么样的算法比较方便(数据库用ACCESS)?





...全文
68 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ls9d999999 2003-12-06
  • 打赏
  • 举报
回复
我也碰到这样的情况,后来是用递归完成的,先扫描当前所选类的子类ID,并压入堆栈,然后一个一个弹出,如果已经是叶子结点了的话,就统计并返回该类的合计,如果不是叶子结点,又调用这个函数,最后的返回值就是你的该类的总计,呵呵,没有说清楚.如果有机会一起交流.

用递归的话C/C++中是可以用的,VB就不知如何用了?
zgxly2002 2003-12-04
  • 打赏
  • 举报
回复
如果是SQL的话,可以使用自定义函数,我就做过传一个ID给函数,则下级的数目也就统计出来,

另外建议再定一个字段来判定是否是类别,还是明细项(请看以下自定义函数)

CREATE function dbo.Usf_GetSubNum (@lbid int=0)
returns int
as
begin
declare @tmp1 table (lbid int,pid int,lbname varchar(200),isdetail int)
declare @num int

insert @tmp1 select lbid,pid,lbname,isdetail from lbtab where lbid=@lbid

while exists(select 1 from lbtab a inner join @tmp1 b on a.pid=b.lbid where a.lbid not in (select lbid from @tmp1)) begin
insert @tmp1 select a.lbid,a.pid,a.lbname,a.isdetail from lbtab as a inner join @tmp1 as b on a.pid=b.lbid where a.lbid not in (select lbid from @tmp1)
end

select @num=count(*) from qyinfo as a inner join tolb as b on a.qyid=b.qyid inner join lbtab as c on b.lbid=c.lbid where b.lbid in (select lbid from @tmp1)
return @num
end
simanh 2003-12-04
  • 打赏
  • 举报
回复
up
myhot-河马吃草 2003-12-04
  • 打赏
  • 举报
回复
这个情况太有用了。。。关注。。。。。

是一种上下级的关系。。
再行业软件中尤为重要。1
hemeijun81 2003-12-04
  • 打赏
  • 举报
回复
学习!
nik_Amis 2003-12-04
  • 打赏
  • 举报
回复
SQL版有个骨灰贴,可以找找看,
feilong215 2003-12-04
  • 打赏
  • 举报
回复
學習
  • 打赏
  • 举报
回复
关注
up
programfish 2003-12-04
  • 打赏
  • 举报
回复
学习
planetike 2003-12-04
  • 打赏
  • 举报
回复
我也碰到这样的情况,后来是用递归完成的,先扫描当前所选类的子类ID,并压入堆栈,然后一个一个弹出,如果已经是叶子结点了的话,就统计并返回该类的合计,如果不是叶子结点,又调用这个函数,最后的返回值就是你的该类的总计,呵呵,没有说清楚.如果有机会一起交流.

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧