王五时,???=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>