如题
张三给李四发了1个任务 任务的结束时间是 2011-04-15 
然后有个字段 EndWarningNumber 是任务结束前几天提醒 比如EndWarningNumber =3 那就是在2011-04-12这天提醒 13号 14号 都提醒所想得到的结果是
进入一个页面 一个列表 列表上显示
需要提醒的任务
多个人都给李四发了
这个列表上就显示需要提醒完成的任务
表结果
BaseUserInfo 用户表 id name
TaskPublished 任务发布表 ID name  EndWarningNumber  EndPeriod(任务结束时间)
OrganizeTask 任务接收表 用户ID 任务ID求解~~~~

解决方案 »

  1.   

    就一个select就行了啊
    至于差几天 你可以datediff(dd,开始时间,结束时间)
      

  2.   


    select * from table
    where dateadd(dd,-几天?,time字段)<=getdate()
      

  3.   


    select * from organizetask c,baseuesrinfo a,taskpublished b
    where c.用户id=a.id and a.name='李四'
    and c.任务id=b.id and datediff(dd,endperiod,getdate())
    between 0 and b.EndWarningNumber
      

  4.   

    --某些字段不太清楚,仅做参考吧
    SELECT
    需要提醒的任务名称 = a.[name],
    任务接收者 = STUFF((SELECT ','+c.[name] FROM OrganizeTask WHERE 任务ID=b.任务ID FOR XML PATH('')), 1, 1, ''),
    任务发送者 = STUFF((SELECT ','+[name] FROM TaskPublished WHERE ID=a.ID FOR XML PATH('')), 1, 1, '')
    FROM TaskPublished a
    INNER JOIN OrganizeTask b
    ON a.ID = b.任务ID
    AND DATEDIFF(DAY, GETDATE(), a.EndPeriod) = a.EndWarningNumber
    INNER JOIN BaseUserInfo c
    ON b.用户ID = c.id
    WHERE c.[name] = N'李四' --去掉这句,看一下是否是你想要的结果
    GROUP BY 需要提醒的任务名称