:)我记得在第一贴中简单的写过:JSP我不会,我觉得没有必要使用一条sql语句实现,我尝试写如下结构:min_value = 100*0.2^6; //中止循环的最小积分
function add_point(username, x) //username为当事人,x为其获得分数
{
uname = username;
nextname=""; //介绍会员名称
tmp; //计算积分
query1 = "UPDATE tbl_name SET 最终积分=最终积分+tmp WHERE 会员名称=uname";
query2 = "SELECT 介绍会员 FROM tbl_name WHERE 会员名称=uname" //计算积分
while(1)
{
if (tmp*0.2 < min_value)
break; mysql_query(query2); //得到介绍会员,赋值给nextname if (nextname == null && uname == username) //username为一级会员
{
tmp = x;
}
else if (nextname != null && uname == username) //username不是一级会员
{
tmp = x*0.8;
}
else if (nextname != null)
{
tmp = 0.2*tmp;
}
else //最后的上级
{
tmp = 0.2*tmp/0.8;
} mysql_query(query1);
if (nextname == null)
break; uname = nextname;
}写的很粗造,见笑!
function add_point(username, x) //username为当事人,x为其获得分数
{
uname = username;
nextname=""; //介绍会员名称
tmp; //计算积分
query1 = "UPDATE tbl_name SET 最终积分=最终积分+tmp WHERE 会员名称=uname";
query2 = "SELECT 介绍会员 FROM tbl_name WHERE 会员名称=uname" //计算积分
while(1)
{
if (tmp*0.2 < min_value)
break; mysql_query(query2); //得到介绍会员,赋值给nextname if (nextname == null && uname == username) //username为一级会员
{
tmp = x;
}
else if (nextname != null && uname == username) //username不是一级会员
{
tmp = x*0.8;
}
else if (nextname != null)
{
tmp = 0.2*tmp;
}
else //最后的上级
{
tmp = 0.2*tmp/0.8;
} mysql_query(query1);
if (nextname == null)
break; uname = nextname;
}写的很粗造,见笑!
解决方案 »
- 求一条mysql 语句???
- mysql in字段需要建立索引么
- MYSQL不能这样写吗?
- 求一SQL/HQL语句:用两个表查询出活跃用户
- 求一sql
- show database后显示->
- 关于mysql 和软件产品 一起打包安装的问题
- MYSQL新建用户问题
- 救急!!!!!!! mysql中如何回滚啊
- 用mysqldump导出的整库备份, 用什么方法才能够导入呢(整库恢复)
- 为什么我在CLIENT上用EMS MYSQL 连接我的MYSQL数据库(在BSD上)提示不允许连接
- mysql -u root -p root pdms <d:\pdms\backdebug\0724.ful 数据导不回
member表 loginName 会员名称
introducer 介绍会员
point_total 会员积分
order表 loginName 会员名称 point 会员自己得到积分
query1 = "UPDATE order SET point=point+tmp WHERE loginName=uname";
else
query1 = "UPDATE member SET point_total=point_total+tmp WHERE loginName=uname";query2 = "SELECT introducer FROM member WHERE loginName=uname";
(实际使用时,上述tmp, uname需要经过格式化代替)上面queyr1, queyr2的赋值语句放的地方不对!应该都放在执行mysql_query()语句之前
select * from member where introducer not in
( select loginName from member)但是mySql不支持子查询啊不过搜无下级会员没有多大用处啊,以为就算有的会员有下级,但是他也可以加分的啊Sql的递归比较麻烦,楼主稍等,现在忙...回头给你写你的introducer是指向loginName还是loginName 的ID?
非常感谢你们,但是我必须还得麻烦你们,因为自己琢磨不透有朋友建议我在MEMBER中加个标志列,0代表无下级,1代表有下级。
但是我考虑了,往数据库中加这个标志就很费劲,所以不行就不用它了我的想法是,所有会员在一定的时期内(如一个月),都有自己的某一积分,最少为0
我打算按固定的时期进行一次计算,这样比发生一个积分就计算一次系统负荷应该会
小些吧。这样加分由管理员手工完成,比较安全
发生一个积分就计算一次的方法,我想得由会员引发,由系统自动计算,会不会出现
会员胡乱操作,乱加分的现象。而且出现这样的情况,也不好挽回,至少我暂时没想到
办法
请指教
loginName 会员名称
point 会员自己得到积分
point_tmp 会员最新积分//计算上级积分函数
add_point(intro,point_1)
{
point_add=point_1*0.2;//0.2为人为设置参数
update order set point=point+point_add where loginName="intro";
提交数据库
select introducer from member where a.loginName="intro";
add_point(introducer,point_add)
}
增加积分个人
update order set point_tmp=point_tmp+point_new where loginName="用户名";
//point_new是新加的piont,暂时先存到point_tmp中全体计算积分
//先把临时的积分加到自己的分数上
update order set point=point+point_tmp
//////////计算上级分数开始
//先取出本次所得分和上级名称
select b.point_tmp,a.introducer from member a,order b where a.loginName="用户名" and a.loginName=b.loginName ;
//调用积分函数
add_point(a.introducer,b.point_tmp);大概意思就是这个,不知道你用的那种语言没有办法写具体的代码,详细的在QQ上说吧