a b c d 4个人a将任务转办给b.b将任务转办给c.c将任务转办给d....a 看到的记录. a->b->c->d.....数据表应该如何设计呢?
2 回答
largeQ
TA贡献2039条经验 获得超7个赞
因为MySQL 不太支持存储有顺序的列表类型, 当然如果把任务队列a->b->c->d
看成字符串另说。
有没有考虑过给任务额外增加一些属性,比如计数,时间戳等。因为任务本身应该有一定时效性。
没理解错的话,其实就是当某一个用户开始接手这个任务之后,后续任务对其可见。
比如一项任务执行顺序是a-b-c-d-b
,那可以有:
user task order a task1 0 b task1 1 c task1 2 d task1 3 b task1 4 b task2 0 d task2 1 ... ... ...
比如要查询b的记录,那么就是b接手之后的所有任务都是对b可见的
SQL查询可以是:其中table1
就是存储上述数据的一个表。子查询得到的结果就是找到该用户最早接手的任务对应的序号,这里是2
。
SELECT table1.user FROM table1 WHERE table1.order >= (SELECT table1.order FROM table1 WHERE table1.user = 'a' AND table1.task = 'task1' ORDER BY table1.order LIMIT 1) AND table1.task = 'task1'ORDER BY table1.order;
最后得到有顺序的b->c->d->b
。
慕神8447489
TA贡献1780条经验 获得超1个赞
可以建个1对多关系的两张表啊,任务表(task_id,..)和任务转办表(id, task_id, user_id, parent_id, next_id,..),parent_id为0的就是第一个接手记录,next_id为0的就是最后个接手的记录。查这个任务的所有关系链按照id升序就是了。查指定人的下级关系链找转办表主键id大于这个人所在记录的主键id的就行了。
- 2 回答
- 0 关注
- 658 浏览
添加回答
举报
0/150
提交
取消