原先设计的数据库 里有两张表  一张表是 会员表,一张表是终端表   一个会员对应多个终端,一个终端对应唯一的会员  但是会员可以有 子会员  也就是说  比如b终端属于 a会员 但是a会员是b的子会员,这种情况下,那么b终端也同样属于b会员现在我想要 统计 一个会员 他自己所有拥有的所有终端数(包括子会员的终端,子会员可以再有子会员,无下限)那么我先递归 会员表里有多少会员  然后再去递归每个会员自己总过有多少终端,但是这样一来效率会非常的慢,不知道有没有高手有好的方法实现这样的功能

解决方案 »

  1.   

    假设关系表为a(id,会员ID,子会员ID)这样这个表就记录了每个会员对应的子会员列表,如果你会单表递归,那这种表就没问题拉
      

  2.   

    这种情况应该算DOM模型了。那就融合在一个表中,以父ID标识这个会员的上级,如果是顶级会员,父ID为0或者null,2005以上可以使用CTE功能来实现递归,例子在联机丛书上有,你输入CTE就可以了。
      

  3.   


    比如 会员a 对应b终端,然后a的子会员 有c终端  那么c终端属于a会员和他的子会员,但是b终端只属于a会员,主要是 这个 子会员下还可以有子会员 如果单单是一层那也好办了
      

  4.   


    比如 会员a 对应b终端,然后a的子会员 有c终端  那么c终端属于a会员和他的子会员,但是b终端只属于a会员,主要是 这个 子会员下还可以有子会员 如果单单是一层那也好办了这样统计的结果就是 a会员 b+c终端   子会员c终端  以此类推
      

  5.   

    如果你要这样显示,貌似还真不好做,如果变动不是很频繁,也就是会员C获得了终端C之后一大段时间甚至不会改动的话,可以尝试加一列“计算列”,每次插入时,先花点时间统计出来,然后记录在这个列上,大概就是B+C这样的格式,以后就直接查出来