如题!浏览过XX商品的人还浏览过XX商品数据库如何设计?数据如何统计?

解决方案 »

  1.   

    我想了个简单的方法用户每次浏览商品都记录 用户ID 和 商品ID表 SPLogUserID  SpID
    ------  -----
    1       111
    1       112
    1       113
    2       110
    2       111
    2       113
    3       115
    3       116
    4       118
    5       119
    5       111
    6       120Select Top 5 SpID,Count(SpID) AS SpCount
    From SPLog
    Where UserID in (Select UserID from SPLog Where SpID=111)
    Group By userCD
    Order By SpCount desc,SpID Desc结果:111     3
    113     2
    119     1
    112     1
    110     1这个方法不知道科学不?高手指点一下!另外,怎么在结果中排除商品 111 
    水平太差,见笑了!呵呵
      

  2.   

    ---?LZ是否要这样的效果
    ---创建测试数据
    create table 浏览表(UserID int,SpID int)
      insert 浏览表 select 1,111
          union all select 1,112
          union all select 1,113
          union all select 2,110
          union all select 2,111
          union all select 2,113
          union all select 3,115
          union all select 3,116
          union all select 4,118
          union all select 5,119
          union all select 5,111
          union all select 6,120
    ---创建测试数据
    select * from 浏览表
    ---创建函数
    create function dbo.Fn_Test(@UserID int)
       returns varchar(8000)
    as 
       begin 
         declare @sql varchar(8000)
         set @sql=''
         select @sql=@sql+','+cast(SpID as varchar) from 浏览表 where UserID=@UserID
         return stuff(@sql,1,1,'')
       end
    go
    ---调用函数
    Select UserID,dbo.Fn_Test(UserID) as SpID from 浏览表 group by UserID
    /*
    UserID      SpID           
    ----------- ---------------
    1           111,112,113
    2           110,111,113
    3           115,116
    4           118
    5           119,111
    6           120(所影响的行数为 6 行)
    */
      

  3.   

    ---接条件调用函数
    Select UserID,dbo.Fn_Test(UserID) as SpID from 浏览表 where UserID=1 group by UserID
    /*
    UserID      SpID       
    ----------- ------------
    1           111,112,113(所影响的行数为 1 行)*/