本帖最后由 tangwenlong 于 2013-05-19 21:12:15 编辑

解决方案 »

  1.   

       shortUrl        longUrl      clickNum   commNum  shareNum
      Lxwzyy       www.xxx.com       12       34          45 
      Ssssss       www.ggg.com       43      32          35

    select shortUrl,longUrl,
    SUBSTRING_INDEX(countString23,',',1) as clickNum,
    SUBSTRING_INDEX(SUBSTRING_INDEX(countString23,',',2),',',-1) as commNum,
    SUBSTRING_INDEX(countString23,',',-1) as shareNum
    from url_20130519_hour
      

  2.   

    其它逻辑描述看得太累。
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
      

  3.   

    url_20130519_count这张表的数据是根据main_info_01和表url_20130519得到的。
    url_20130519中存储所有userId名下的shortUrl的clickNum,commNum,shareNum总和。
     myCount  字段表示每一个userId下有多少个shortUrl。例如main_info_01表的数据如下:
      
      userId        shortUrl       firstTime     udateTime
      406           Lxwzyy 
      406           Ssssss 
      476           ffffff
      476            eeeeee
      476            gggggg
      
      表url_20130519中的数据如下所示:
       shortUrl        longUrl            clickNum   commNum  shareNum
      Lxwzyy       www.xxx.com            12         34          45 
      ffffff       www.ffff.com            22         13          23
      eeeeee       www.ssss.com            65         34          12
      gggggg      www.xxxx.com             32         1           3
      Ssssss      www.ggg.com              43         32          35  则url_20130519_count表中的数据应该如下所示:
    userId       myCount        clickNum       commNum      shareNum 
    406             2          55=(12+43)      66=(34+32)       90=(45+35)
    476             3         119=(22+65+32)   48=(13+34+1)     38=(23+12+3)
      

  4.   


     这些select出来的字段怎样插入url_20130519表中呢?谢谢
      

  5.   

    insert into url_20130519
    select ....
      

  6.   


    不要贴图,直接贴文本, 另外insert into 语句贴哪儿了?
      

  7.   

    我按照格式重新把问题提出来一遍如下。create database if not exists wburl;use wburl;create table if not EXISTS main_info_01
    (
     userId int unsigned not null,
     shortUrl varchar(256) not null,
     firstTime int unsigned  default 0,
     updateTime int unsigned default 0,
    PRIMARY key(userId,shortUrl)
    );create table IF NOT EXISTS  url_20130519_hour 
    (
    shortUrl varchar(256) PRIMARY key ,
    longUrl text  ,
    countString23 varchar (256) default '0,0,0');create table IF NOT EXISTS url_20130519 
    (
      shortUrl varchar(256) PRIMARY key ,
      longUrl text ,
      clickNum int unsigned  default 0,
      commNum int unsigned  default 0,
      shareNum int unsigned  default 0
    );create table IF NOT EXISTS  url_20130519_count 
    (
     userId int unsigned PRIMARY KEY ,
     myCount int unsigned  default 0,
     clickNum int unsigned  default 0,
     commNum int unsigned  default 0,
     shareNum int unsigned  default 0
    );use wburl;insert into main_info_01 values (406,'dddddd',1368974450,1368974450),
    (406,'wqwqqw',1368974499,1368974499),
    (456,'jijiji',1368974674,1368974674),
    (456,'klklkl',1368974700,1368974700),
    (456,'njnjnj',1368974727,1368974727);insert into url_20130519_hour values('dddddd','www.xxx.com','12,34,32'),
    ('wqwqqw','www.dddd.com','56,12,43'),
    ('jijiji','www.sss.com','2,4,5'),
    ('klklkl','www.sss.com','3,32,12'),
    ('njnjnj','www.ff.com','34,4,3');
    开始只有main_info_01和url_20130519_hour表中有原始数据。所以url_20130519表格中的数据是直接由url_20130519_hour中的数据生成的。生成算法的伪代码为:
    For 每一条记录 in  url_20130519_hour
        Do
           Select shortUlr, longUrl, countString23 这三个字段
            将countString23 这个字符串字段按照“,”分割出三个量
            至此得到shortUlr, longUrl,和三个整型量作为一条记录插入url_20130519表中
        Done
    按照以上插入的数据,url_20130519表格中数据应该为:
    shortUrl        longUrl     clickNum           commNum     shareNum
    dddddd          www.xxx.com    12              34            32
     wqwqqw         www.dddd.com    56              12            43
    jijiji         www.sss.com      2               4               5
    klklkl        www.sss.com       3               32             12
    njnjnj         www.ff.com      34               4               3表url_20130519_count中的数据是根据main_info_01和url_20130519中的数据生成的。
    所以为了得到表url_20130519_count,必须先得到url_20130519表中的数据。
    具体例子在上面
      

  8.   


    不要贴图,直接贴文本, 另外insert into 语句贴哪儿了?将insert语句贴出拉了,第二个问题的例子请参见上文。谢谢啦
      

  9.   

    url_20130519_count生成数据的例子:
    url_20130519_count这张表的数据是根据main_info_01和表url_20130519得到的。
    url_20130519中存储所有userId名下的shortUrl的clickNum,commNum,shareNum总和。
     myCount  字段表示每一个userId下有多少个shortUrl。例如main_info_01表的数据如下:
      
      userId        shortUrl       firstTime     udateTime
      406           Lxwzyy 
      406           Ssssss 
      476           ffffff
      476            eeeeee
      476            gggggg
      
      表url_20130519中的数据如下所示:
       shortUrl        longUrl            clickNum   commNum  shareNum
      Lxwzyy       www.xxx.com            12         34          45 
      ffffff       www.ffff.com            22         13          23
      eeeeee       www.ssss.com            65         34          12
      gggggg      www.xxxx.com             32         1           3
      Ssssss      www.ggg.com              43         32          35  则url_20130519_count表中的数据应该如下所示:
    userId       myCount        clickNum       commNum      shareNum 
    406             2          55=(12+43)      66=(34+32)       90=(45+35)
    476             3         119=(22+65+32)   48=(13+34+1)     38=(23+12+3)