首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示每个用户在一天内的工作分配

问显示每个用户在一天内的工作分配
EN

Stack Overflow用户
提问于 2020-11-21 00:10:52
回答 1查看 31关注 0票数 1

我正在构建一个用户在一天(或给定的时间范围)具有各种任务的时间表显示

现在,我通过一次选择当天分配的所有用户,循环遍历他们,并在每个循环中选择用户当天可能有的所有任务来实现这一点。

main选择

代码语言:javascript
复制
SELECT u.id, u.name 
FROM users u, assignments a, events e
WHERE u.id = a.u_id AND a.e_id = e.id AND e.date = '{DATE}'
GROUP BY u.id

主select的每个循环中的select

代码语言:javascript
复制
SELECT e.title, e.date  
FROM assignments a LEFT JOIN events e ON e.id = a.e_id
WHERE a.u_id = {u.id_FROM_SELECT_ABOVE} AND e.date = '{DATE}'

这可以在一个性能更好的select中实现吗?有时,时间表可能每天有数百个用户,每个用户都有几个任务,而事件和任务表中有数万条记录。我正在用PHP做这件事

EN

回答 1

Stack Overflow用户

发布于 2020-11-21 00:25:13

优化器应该能很好地处理这个查询:

代码语言:javascript
复制
SELECT e.title, e.date  
FROM assignments a LEFT JOIN events e ON e.id = a.e_id
WHERE a.u_id in (
  SELECT u.id
  FROM users u, assignments a, events e
  WHERE u.id = a.u_id 
    AND a.e_id = e.id 
    AND e.date = '{DATE}'
  GROUP BY u.id
)
  AND e.date = '{DATE}'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64932924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档