放一个UID,STARTIP,ENDIP,COUNTRY,LOCAL的记录上来看看是怎么排的,各个字段的代表的是什么?

解决方案 »

  1.   

    说得不够清楚。两个UID有什么联系?IP/STARTIP/ENDIP 的数据是什么样的,是一个大整数还是 xxx.xxx.xxx.xxx 这样的形式?
      

  2.   

    假设是大整数。SELECT b.COUNTRY,b.LOCAL FROM rj_ipdata a LEFT OUTER JOIN rj_ip b ON a.IP>=b.STARTIP AND a.IP<=b.ENDIP 
      

  3.   


    2个UID 没关系..rj_IP  是存放IP 的UID  
    rj_ipdata 是存放来访者的UID  rj_ipdata 开始是空数据表 有一个来访者访问就把IP地址存放进数据表,然后查询的时候从这个数据表里取IP地址然后在对比RJ_IP 数据表取 相对应的国家和地区然后在显示出来...是这样的
      

  4.   

    第一步:$ip=用户ip,提取出来
    第二部:将ip转成库中相同的格式,比如:如果库中是xxx.xxx.xxx.xxx
    如客户的数是120.2.3.7之类的,要补齐
    第三步:从$ip中截取和库中查询相对应的IP段
    第四步:根据相关IP段查询库中对应的城市和地区
      

  5.   

    我现在有2个数据表,一个rj_ip 表 存的是 QQ纯真转存进MYSQL 的数据内容 
    有5个字段.UID,STARTIP,ENDIP,COUNTRY,LOCAL 一个表是rj_ipdata 放的是来访者的IP 
    有3个字段 UID,IP,DATA 我现在想通过 rj_ipdata 里的IP 字段 然后查询  RJ_IP表 里的 IP字段 和想对应的城市,和地址 SELECT * FROM rj_ipdata AS rj_d INNER JOIN rj_ip WHERE rj_d.IP>rj_ip.STARTIP AND rj_d.IP<rj_ip.ENDIP
    这段时间没有怎么写SQL,都是在做.NET,用的nhibernate,如果上面的不正确,你可以把inner 改成 outner(不知道是不是这么写,如果不正确,找一下手册吧) 思路就是这样了,也没有什么难的.
      

  6.   


    function flyip(str)
    if isnull(str) or str="" then
    flyip="xxx"
    else
    flyip=str
    str1=left(flyip,instr(flyip,".")-1) 
    flyip=mid(flyip,instr(flyip,".")+1) 
    str2=left(flyip,instr(flyip,".")-1) 
    flyip=mid(flyip,instr(flyip,".")+1) 
    str3=left(flyip,instr(flyip,".")-1) 
    str4=mid(flyip,instr(flyip,".")+1)
    flyip=cint(str1)*256*256*256+cint(str2)*256*256+cint(str3)*256+cint(str4)-1
    end if
    end function
    这个函数是先把ip库里的ip按规律转换成数字,方便查询,就是先读下 修改 在保存数字
    示例:<%=flyip(rs("beginIP"))%>
    function ipfly(str)
    if isnull(str) or str="" then
    ipfly="xxx"
    else

    ipfly=flyip(str)
    flysql="select * from [444] where beginip<="&ipfly&" and endip>="&ipfly
    set flyrs=flyconn.execute(flysql)
    if not flyrs.eof then
    ipfly=flyrs("address")
    else
    ipfly=ipfly&"未知IP"&str
    end if
    flyrs.close
    set flyrs=nothing

    end if
    end function
    这个是查ip 的
    示例:<%=ipfly(rs("Add_IP"))%>自己写的 ip数据库里有30W条记录 速度比较慢
    lz可以去下个51la精简版的3W条左右你可以先用flyip把ip库里的没一个ip包括beginip endip都转下
    之后用ipfly查询
      

  7.   

    貌似我这个。
    asp的
    lz改下...
      

  8.   

    另外
    这个好像只有ac的数据库可以
    SQL的int支持不了转换后那么大的数