日期:2014-05-17  浏览次数:21041 次

王五时,???=0.33+0.5+1+0.5=2.33 0.33由来为:xueyuan表里id为1的a字段里有三个名字,所以王五就只占0.33,其他类推
数据库表:muser
id xm
1 王五
2 麻子
3 李六

数据库表:xueyuan
id name a
1 张三 王五,麻子,李六
2 彭七 王五,李六
3 雷八 王五
4 李四 麻子,李六
5 何九 王五,李六

<%......
mrs.open "select * from mUser",conn,1,3
do while not mrs.eof
%>
  姓名 数量
<%=mrs("xm")%> ???
<%mrs.movenext
loop%>
我想要红色???的内容显示为:
mrs("xm")为
王五时,???=0.33+0.5+1+0.5=2.33 0.33由来为:xueyuan表里id为1的a字段里有三个名字,所以王五就只占0.33,其他类推
麻子时,???=0.33+0.5=0.88
其他???同上算法

------解决方案--------------------
个人思路:
先列出数据库表:xueyuan生成数组:
array(0)="王五,麻子,李六"
array(1)="王五,李六"
array(3)="王五"
array(4)="麻子,李六"
array(5)="王五,李六"
......

再列出数据库表:muser 循环用xm去匹配每个数组,当数组存在有相同名字就统计所占比例并加上,没有就跳过。这样就可以得出你要的数值

关键代码:
dim i
i=0
mrs.open "select * from mUser",conn,1,3
do while not mrs.eof
array(i)=mrs("a")
i=i+1

.......
dim name,temp,n
mrs.open "select * from muser",conn,1,3
do while not mrs.eof
name=mrs("xm")
n=0
for i=0 to ubound(array)
if instr(","&array(i)&",",","&name&",")>0 then
temp=split(array(i),",")
n=n+1/ubound(temp) '最好处理一上小数
end if
next
response.write name&"为:"&n
------解决方案--------------------
HTML code
<select name="zt" id="zt" onChange="choose(this.value)">
    <option value="" selected></option>
    <option value="学习中">学习中</option>
    <option value="咨询">咨询</option>
</select>

<input name="dm" type="checkbox" value="珠心算" />
珠心算
<input name="dm" type="checkbox" value="口才" />
口才
<input name="dm" type="checkbox" value="绘画" />
绘画
<input name="dm" type="checkbox" value="练字" />

<script type="text/javascript">
    function choose(v){
        if(v=="咨询"){
            check("珠心算",true);//选中
            check("口才",true);//选中
            check("绘画",false);//取消选中
            check("练字",false);//取消选中
        }else{
            check("珠心算",false);//选中
            check("口才",false);//选中
            check("绘画",true);//取消选中
            check("练字",true);//取消选中
        }
        //自己调整需要
    }
    function check(v,o){
        var obj=document.getElementsByName("dm");
        for(var i=0;i<obj.length;i++){
            if(obj[i].value==v){
                obj[i].checked=o;
            }
        }
    }
</script>