关于上下级数据库的设计和查询方法

丽宝宝 发布于 2016/05/04 14:48
阅读 386
收藏 1

求教:

   我有个项目商家可以添加下级,下级也可以发展下下级,以及更下级。。

我需求的是 ,商家可以知道自己所有第一下级的人数以及所有下级的人数,并且商家的下级自己也可以发展下级并且得到自己下级的人数总量

但我进行注册的时候只需要填推荐人的名字,我要如何匹配推荐人是否有上级,并把上级的总下级人数进行增加

加载中
0
飘零清风
飘零清风
。。。怎么感觉这么像传销。。。用客户表id做外键关联就好了。。。人数用递归统计就可以吧 或者单独做一个字段记录
0
范老司
范老司

这个做法有很多种,最简单的一种就是在用户信息表里面加一个字段 'level' 用来表示级别,

比如说 1级客户是最顶端客户,没有上级,那么值为1

         2级客户的上级是该字段值为1的客户..... 以此类推,当然中间要加些逻辑限制,因为1级客户很多,并不是所有一级客户都是某个2级客户的上级

0
求是科技
求是科技

1.表设计如下

2.测试数据如下

3.查询商家所有第一下级的人数,假设该商家id为1000000000,查询如下

4.查询该商家所有下级的人数

#1.查询自己是第几级
SELECT tct.COMMODITY_LEVEL FROM t_commodity_type tct WHERE tct.COMMODITY_TYPE_ID = '1000000000'
#2.查询总共有多少级,一般来说,总级别不可能太多,设计表的时候设计成5级就差不多了
SELECT MAX(tct2.COMMODITY_LEVEL) FROM t_commodity_type tct2
#3.查询自己下一级的数量
SELECT COUNT(1) FROM t_commodity_type tct3 WHERE tct3.COMMODITY_LEVEL = 1+'自己级别' AND tct3.PARENT_TYPE_ID = 1000000000
#4.查询自己下一级的id
SELECT tct3.COMMODITY_TYPE_ID FROM t_commodity_type tct3 WHERE tct3.COMMODITY_LEVEL = 1+'自己级别' AND tct3.PARENT_TYPE_ID = 1000000000
#5.查询自己下下级的数量
SELECT COUNT(1) FROM t_commodity_type tct4 WHERE tct4.COMMODITY_TYPE_ID in ('上级所有的id')

备注:关于第4点,你要的该级所有的下级数量,一个sql是可以完成的,我曾经写过,SQL比较复杂,推荐使用mybatis框架,使用mybatis的collection属性,可以相当方便的查询出来,无论是数量还是具体的每个下级详情。

5.注册的时候,会填写推荐人的id,拿这个id进去就可以查到该推荐人是否具有上级

6.如果该推荐人有上级的话,就按照步骤4查询该上级的所有下级人数


返回顶部
顶部