发挥你们的智慧,帮我个大问题 ( 积分: 300 )

  • 主题发起人 主题发起人 rqj
  • 开始时间 开始时间
R

rqj

Unregistered / Unconfirmed
GUEST, unregistred user!
最近遇到一个大问题了,想了很久还是没办法解决,只好来找各位来拉
问题1:如何插入新会员(到数据库里)
如果你现在是一个会员A,你可以介绍其他人进如该组织,每个人至多只能有5个会员
(如为B1,B2,B3,B4,B5),如果现在你现在要介绍第6个人(如为B6)进来,那么
B6将属于你下家(下家从左到右,B1,当然B1下家人数也不多与5个人)的下家,如果
B1的下家人数也多与5个,那么B6就属于B2(当然B2下家人数也不多与5个人),
如果B1-B5下家人书都多与5个,那么,B6就属于B1下家的下家,依次类推。
示意图
A
B1 | B2 | B3 | B4|B5
B6 |C1| C2| C3| C4
问题2; 如何得到奖金
其实,如果问题1解决了,问题2应该也可以解决
问题2是: A的奖金是所有A下家充值数乘4%的和,
如:A=B1*4%+B2*4+%B3*4%+B4*4%+B5*4%+B6*4%+C1*4%+C2*4%+C3*4%+C4*4%
问题3; 如何得到下家
同样,如果问题1解决了,问题2应该也可以解决
问题3是。根据输入的会员卡号,找到这个会员卡号所有的下家
,(最好分层显示出来)
==============================================
数据库:
我只建了一张表,可以满足要求,但就是不知道会不会对实现上面的功能造成影响
表:
cardID ;会员卡号
fatherID ;介绍人卡号
cardName: 会员姓名
inDate: 加入日期
sumNum: 已有下家人数(默认为0)
sumMoney: 充入的值(可以累加0
--------------------------------------------------
不知道我说的够不够详细,
希望各位大富翁发挥你们的智慧能帮我解决一下,
我真的想不出好的方法呀
 
我认为应该建立双向链,即在数据库中加入上家(上家为根的情况可以设置一个标志)和下家(下家为叶子时也可以置一标志),这样检索比较方便,计算奖金也容易些。
 
在表中设立规则主键:
A:01
B1:0101
B2:010101
B3:01010101
B4:0101010101
......

算A的奖金操作:
select * from table where 编号 like '01%'
就找出A的下线
 
会员卡号包含其上线的主键
 
唉。又是这个家族树的问题。
本人以Oracle为例回答过此问题。

还有这些也可做参考。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2668850
 
sun_delphi说的太好拉
按照你这个方法,我可以接问题2和3
,我怎么想那么久就没想到这个呢,傻
但这样问题1还是没有很好的解决呀
各位再帮我献些良策
 
MLM?违法
 
不是做传销的
我们公司在做电话卡义务
在线等呀
各位老大,拜拖了
 
sun_delphi的方法对层次有限制。

雇員表employees結構說明如下(請運行附檔代碼以創建表格并填入測試資料)﹕
每个雇员都向其 ID 存储在 mgrid 列中的经理汇报。在引用 empid 列的 mgrid 列上定义了一个外键,这意味着经理 ID 必须对应于该表中的一个有效雇员 ID 或者为 NULL。老板
Nancy 在 mgrid 列中具有 NULL 值。每个雇员都向其 ID 存储在 mgrid 列中的经理汇报。在引用 empid 列的 mgrid 列上定义了一个外键,这意味着经理 ID 必须对应于该表中
的一个有效雇员 ID 或者为 NULL。老板 Nancy 在 mgrid 列中具有 NULL 值。

請寫出以下查詢﹕
显示有关 Janet(empid=3) 及其所有级别下属的详细信息﹐以及層級結構說明。
結果大致如下﹕
empid empname mgrid lvl
----------- ------------------------- ----------- -----------
3 Janet 1 0
7 Robert 3 1
8 Laura 3 1
9 Ann 3 1
11 David 7 2
12 Ron 7 2
13 Dan 7 2
14 James 11 3
--关键是 empid和mgrid有父子关系

CREATE TABLE Employees
(
empid number(3,0) NOT NULL,
mgrid number(3,0) NULL,
empname varchar2(25) NOT NULL,
salary number(7,2) NOT NULL,
CONSTRAINT PK_Employees PRIMARY KEY(empid),
CONSTRAINT FK_Employees_mgrid_empid
FOREIGN KEY(mgrid)
REFERENCES Employees(empid)
)
/
CREATE INDEX idx_nci_mgrid ON Employees(mgrid)
/
INSERT INTO Employees VALUES(1 , NULL, 'Nancy' , 10000.00);
INSERT INTO Employees VALUES(2 , 1 , 'Andrew' , 5000.00);
INSERT INTO Employees VALUES(3 , 1 , 'Janet' , 5000.00);
INSERT INTO Employees VALUES(4 , 1 , 'Margaret', 5000.00);
INSERT INTO Employees VALUES(5 , 2 , 'Steven' , 2500.00);
INSERT INTO Employees VALUES(6 , 2 , 'Michael' , 2500.00);
INSERT INTO Employees VALUES(7 , 3 , 'Robert' , 2500.00);
INSERT INTO Employees VALUES(8 , 3 , 'Laura' , 2500.00);
INSERT INTO Employees VALUES(9 , 3 , 'Ann' , 2500.00);
INSERT INTO Employees VALUES(10, 4 , 'Ina' , 2500.00);
INSERT INTO Employees VALUES(11, 7 , 'David' , 2000.00);
INSERT INTO Employees VALUES(12, 7 , 'Ron' , 2000.00);
INSERT INTO Employees VALUES(13, 7 , 'Dan' , 2000.00);
INSERT INTO Employees VALUES(14, 11 , 'James' , 1500.00)
/
--
select empid,empname,mgrid,level-1
from employees
start with empid=3
connect by mgrid=prior empid
order by empid;

Oracle中的家族樹(family tree)和connect by 子句
无限制的数据库,这种例子很多。
在www.2ccc.com上搜索YourBase
 
路过帮顶
 
多人接受答案了。
 

Similar threads

后退
顶部