首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 补发80分!求一写法! [已结帖,结帖人:fanyixiao]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fanyixiao
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-18 16:57:05 楼主
    有一个数据库表 db,字段如下


        id        ziduan
    -----------------------
        1          a,b,c,e
    -----------------------
        2          b,f,e
    -----------------------
        3          a,b,f
    -----------------------
        4          b,c,d
    -----------------------
        5          a,f
    -----------------------


    现在要求输出不重复的项  a  b  c  d  e  f  并统计出a,b,c,d,e,f的个数。

    请写法,本人调试不出来。
    80  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zzxap
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 17:10:291楼 得分:0
    什么不重复的项  a  b  c  d  e  f 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • haiyun365
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 17:15:162楼 得分:0
    这个就像文章中搜索关键字一样,分别搜索所有里面包含a的个数,然后引用。
    输出的话 就用spilt 函数 用,分割
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fanyixiao
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 17:45:383楼 得分:0
    楼上的能详细点吗?我知道用spilt函数
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wcwtitxu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 20:16:074楼 得分:0
    数据量大不大?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fanyixiao
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 20:19:505楼 得分:0
      不大
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wcwtitxu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 21:10:236楼 得分:0

    试:
    VBScript code
    <script language="JScript" runat="Server"> function JSCount(rs) { if (rs.State != 1) return 0; var a = []; var t; while (!rs.EOF) { t = rs.Fields.Item("ziduan").Value; if ("" != t) a.push(t); rs.MoveNext(); } rs.Close(); t = a.join(",").split(",").sort().join(","); t = t.replace(/(([^,]+),)(\1)*\2/g, "$2"); return t.split(","); } </script> <% Dim arr Set arr = JSCount(null) Response.Write arr.length Response.Write arr.toString() Set arr = Nothing %>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wcwtitxu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 21:11:577楼 得分:0
    更正:
    VBScript code
    <% Dim arr Set arr = JSCount(conn.Execute("SELECT [ziduan] FROM [db]")) Response.Write arr.length Response.Write arr.toString() Set arr = Nothing %>


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fanyixiao
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 11:50:038楼 得分:0
    列出a,b,c,d,e,f已经没有问题,现在的问题是分别列出a的个数,b的个数,c的个数,d,的个数......,而不是所有的个数的总和!非常感谢楼上的帮助!就差一步了!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wcwtitxu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 19:49:329楼 得分:60
    VBScript code
    <script language="JScript" runat="Server"> function JSCount(rs) { var a = []; if (rs.State != 1) return a; var t; while (!rs.EOF) { t = rs.Fields.Item("ziduan").Value; if ("" != t) a.push(t); rs.MoveNext(); } rs.Close(); t = a.join(",").split(",").sort().join(","); var r = /([^,]+)(?:,\1)*/g; var mr = null; a = []; while ((mr=r.exec(t)) != null) { var x = mr[0].split(","); a.push({name:x[0], count:x.length}); } a.get = function(i) { return this[i]; }; return a; } </script> <% Dim arr, i, obj Set arr = JSCount(conn.Execute("SELECT [ziduan] FROM [db]")) For i = 0 To arr.length-1 'Set obj = arr.get(i) 'Response.Write obj.name & " ------------ " & obj.count & "<br />" 'Set obj = Nothing Response.Write arr.get(i).name & " ------------ " & arr.get(i).count Next Set arr = Nothing %>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tomatofly
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 23:20:3410楼 得分:0
    VB code
    <% On Error Resume Next Dim Conn,ConnStr ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath("a.mdb") Set Conn = Server.CreateObject("ADODB.Connection") Conn.connectionstring = ConnStr Conn.open If Err Then Err.Clear Conn.close() Set Conn = Nothing Response.Clear() Response.Write "数据库连接出错!" Response.End End If Dim myComm,rs,myRs on error resume next Connectdb() Set myComm = Server.CreateObject("ADODB.COMMAND") With myComm .ActiveConnection = Conn .CommandText = "select * from [db]" .CommandType = &H0001 .Prepared = true End With set rs = myComm.Execute() Dim Vtemp:Vtemp = rs.Getrows '这里将记录集赋值在一个二维数组中,这个方法性能是一个抛物线。 rs.close set rs = nothing Conn.close set Conn = nothing '==================以上是数据库查询,以下是核心程序================== Dim i,V,Vt,Str for i=0 to UBound(Vtemp,2) Vt = Vt&","&Vtemp(1,i) next Vt = mid(Vt,2) V = split(Vt,",") str = "共有"&UBound(V)+1&"个元素,其中:" for i=0 to UBound(V) if not Instr(str,V(i))>0 then len(Vt)-len(replace(Vt,V(i),"")) str = str&V(i)&len(Vt)-len(replace(Vt,V(i),""))&"个," end if next Response.Write(str&"<br />"&Vt) %>


    有不明白的请回复,效果http://e.fly8.us/1.asp 数据库http://e.fly8.us/a.mdb
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tomatofly
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 23:29:2511楼 得分:0
    楼上这位用的是Jscript 我用的是VBScript ,本帖为解释
    VB code
    Dim i,V,Vt,Str for i=0 to UBound(Vtemp,2) Vt = Vt&","&Vtemp(1,i) next '以上将数据库的记录全部分配在一个数组中,同时用到临时字符串(即:数据库db表中所有 ziduan 列用,分隔在一个Vt变量中) Vt = mid(Vt,2) V = split(Vt,",") '将Vt字符串按,所谓分隔符赋值于一个数组V str = "共有"&UBound(V)+1&"个元素,其中:" for i=0 to UBound(V) if not Instr(str,V(i))>0 then'如果str变量中不已经包含这个元素就进行处理 len(Vt)-len(replace(Vt,V(i),""))'计算出这个元素出现过几次 str = str&V(i)&len(Vt)-len(replace(Vt,V(i),""))&"个,"'将元素的出现次数以及元素值放在变量str中等待显示 end if next Response.Write(str&"<br />"&Vt)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fanyixiao
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 13:51:5912楼 得分:0
    谢谢楼上各位!我调试一下,非常感谢!各位高手的参与和帮助!非常感激!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fanyixiao
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 15:59:1113楼 得分:0
    再次非常感谢wcwtitxu 和tomatofly  两位楼主!我是按照 提供的方法进行写的,目前有一个问题就是 怎样在asp中把变量传递到jsscript中
        while (!rs.EOF) {
            t = rs.Fields.Item("ziduan").Value;
            if ("" != t) a.push(t);
            rs.MoveNext();
        }
    我现在的“ziduan”是个变量,需要读取数据库得到具体的字段名称,现在的问题是,读出字段后,怎样传递到rs.Fields.Item("ziduan").Value; 里面,把“ziduan”以变量的方式传进去?我直接传送,不认识!


    还请“wcwtitxu “在帮助!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tomatofly
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 16:42:2314楼 得分:20
    asp只是在服务器上运行的脚本程序而JavaScript是在客户端运行的脚本程序所以举个例子
    VB code
    <script> alert("<%=rs.Fields.Item("ziduan").Value%>") </script>


    这样就可以把你的asp程序床递给你的JS了!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wcwtitxu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 19:42:4315楼 得分:0
    VBScript code
    <script language="JScript" runat="Server"> function JSCount(rs, field) { var a = []; if (rs.State != 1) return a; var t; while (!rs.EOF) { t = rs.Fields.Item(field).Value; if ("" != t) a.push(t); rs.MoveNext(); } rs.Close(); t = a.join(",").split(",").sort().join(","); var r = /([^,]+)(?:,\1)*/g; var mr = null; a = []; while ((mr=r.exec(t)) != null) { var x = mr[0].split(","); a.push({name:x[0], count:x.length, toString:function(){return this.name;}}); } a.get = function(i) { return this[i]; }; return a; } </script> <% Dim arr, i, obj, F F = "ziduan" ' 这里改成查数据库 Set arr = JSCount(conn.Execute("SELECT [ziduan] FROM [db]"), F) Response.Write "" & arr.length & "个元素:" & arr.join(",") & "<br />" For i = 0 To arr.length-1 'Set obj = arr.get(i) 'Response.Write obj.name & " ------------ " & obj.count & "<br />" 'Set obj = Nothing Response.Write arr.get(i).name & " ------------ " & arr.get(i).count & "<br />" Next Set arr = Nothing %>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • linseng129
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 21:30:3416楼 得分:0
    <%
        Dim arr, i, obj, F

        F = "ziduan" ' 这里改成查数据库
        Array zimu[6] = ("a","b","c","d","e","f")
        For i=1 to 6
        Set arr = JSCount(conn.Execute("SELECT [ziduan] FROM [db] where ziduan like '%"&zimu[i]&"%' "), F)

        Response.Write "共" & arr.length & "个元素:" & arr.join(",") & " <br />"

        For i = 0 To arr.length-1

            'Set obj = arr.get(i)
            'Response.Write obj.name & " ------------ " & obj.count & " <br />"
            'Set obj = Nothing

            Response.Write arr.get(i).name & " ------------ " & arr.get(i).count & " <br />"
        Next

        Set arr = Nothing
        End If
    %>

    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved