KeyWords 表 -存放的是关键词数据; Clickinfo 表 -存放的是点击的数据。(根据KeyWords表的信息点击后,保存的点击记录信息)KeyWords 内容大概是:关键词名称  关键词网址 
aaa         www.1212.com
bbb         www.1223.com
ccc         www.64664.com
aaa         www.545654.com
ccc         www.1212d.com
bbb         www.6786.com等等
Clickinfo 表内容大概是:
关键词名称    关键词网址         点击时间(日期型格式)  点击IP
bbb           www.1223.com       2010-3-3 17:22:22  121.151.11.111
ccc           www.1212d.com      2010-3-3 17:26:22      121.151.2.22
aaa           www.545654.com     2010-3-3 17:46:22      121.141.32.3
aaa           www.545654.com     2010-3-3 17:56:22      121.150.22.24
等等
现在,要做的是:从KeyWords表取出所有的记录,但是要满足这个条件。取出的记录,在Clickinfo表中,同关键词名称、同关键词网址、同IP的前三段(比如aaa.bbb.ccc.???  aaa.bbb.ccc.相同就视为是同IP,本地IP已经获得,变量是IP,这个IP和Clickinfo表中的点击IP比较)、点击时间和当前的时间间隔大于60分钟(当前时间用Getdate取得)。
不知这个SQL如何写?

解决方案 »

  1.   

    我写了个,但是运行后发现取出的记录数甚至都大于KeyWords表的总记录数,这肯定是不对的。我是这样写的:
    Str2 := ' Select ' +      
          ' a.关键词名称 as 关键词名称 , '+
          ' a.关键词网址 as 关键词网址 , '+        
          ' From KeyWords a '+
          ' Left Join '+
          ' (Select 关键词名称 , 关键词网址 , Max(点击时间) as 点击时间 , 点击IP From ClickInfo where 点击IP like ''' + IP + '%'' Group By 关键词名称 , 关键词网址 , 点击IP ) b '+
          ' on a.关键词名称 = b.关键词名称 And a.关键词网址 = b.关键词网址 '+
          ' Where 1=1 '+
          ' And (DateDiff("n", b.点击时间 , GetDate()) > 60) Order By a.关键词名称 Desc';
      

  2.   

    东西看上去有点乱,得耐心看完,并结合我写的SQL,考虑一下,我写的当然是错误的,没能实现要求。
      

  3.   

    把我写的重新发下:
    Str2 := ' Select ' +      
          ' a.关键词名称 as 关键词名称 , '+
          ' a.关键词网址 as 关键词网址 , '+        
          ' From KeyWords a '+
          ' Left Join '+
          ' (Select 关键词名称 , 关键词网址 , Max(点击时间) as 点击时间 , 点击IP From ClickInfo where 点击IP like ''' + IP + '%'' Group By 关键词名称 , 关键词网址 , 点击IP ) b '+
          ' on a.关键词名称 = b.关键词名称 And a.关键词网址 = b.关键词网址 '+
          ' Where 1=1 '+
          ' And (DateDiff("n", b.点击时间 , GetDate()) > 60) Order By a.关键词名称 Desc';
      

  4.   

    你连的是sql server 的数据库么?可以在on后面试加一个链接条件and substr(a表.ip,1,instr(a表.ip,'.',1,3) = substr(b表.ip,1,instr(b表.ip,'.',1,3)
      

  5.   

    有几个疑问,望楼主解释:
    一、KeyWords表中既然存储的是关键字,那为什么第一列还有重复值呢?
        既然允许第一列有重复值,这个表纯粹就是多余的,没有任何意义!二、Clickinfo表中的字段“关键词网址”,就是一个多余的字段三、同IP的算法很麻烦,建议增加一个字段IPValue,在点击的时候写出IPValue。
        IPValue=256*256*IP1+256*IP2+IP3。IP1、IP2、IP3就是IP的前三段值。
        经过这样的处理后,再写出sql就容易了