SQL 创建日志

标签 sql ms-access

我正在尝试创建一个查询,以记录每人每项任务花费的时间。

我有下表:

  • 包含以下列的日志表:TaskID、PersonID、Hours
  • 成员表,包含以下列:ID、姓名、电子邮件、Skype、备注

最终日志应该如下所示:

| Person1 | Task1 | x hours |
| Person1 | Task2 | x hours |
| Person2 | Task1 | x hours |

因此必须按人员和任务进行分组。

总时间给我带来了麻烦。

到目前为止,这就是我所拥有的:

SELECT m.Name, t.Task, Sum(l.Hours) AS TotalHours
FROM Member AS m, Log AS l, Tasks AS t
WHERE t.TaskID=l.TaskID
GROUP BY t.Task, m.Name;

但是,这为我提供了一个独特的人员-任务组合列表,但包含在该任务上花费的总小时数,而不是每个人在该任务上花费的总小时数。

希望我已经足够清楚地解释了问题,以便您可以帮助我。

提前非常感谢。

最佳答案

您可以在 where 子句中包含您的成员表

因此,如果您的日志表还包含MemberId,您的Sql查询将读取:-

Select m.Name, t.Task, Sum(l.Hours) As TotalHours
From Member AS m, Log AS l, Tasks AS t
WHERE t.TaskID=l.TaskID and m.MemberId=l.MemberId
GROUP BY t.Task, m.Name

这应该会为您提供所需的结果。

编辑:

如果您确实想使用显式连接而不是隐式连接,那么查询将显示如下内容:-

Select m.Name, t.Task, Sum(l.Hours) As TotalHours
From Log AS l
Inner join tasks AS t
On t.TaskID=l.TaskID
Inner join Member AS m
On m.MemberId=l.MemberId
GROUP BY t.Task, m.Name

我通常使用显式联接,因为我的查询相当大,并且我发现显式联接更易于阅读。至于效率和其他因素,我不确定。

关于SQL 创建日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13454737/

相关文章:

c# - 优化日历应用程序的查询和/或数据模型

sql-server - MS Access/SQL Server Len() 脑筋急转弯

c# - 如何使用 Access 数据库中的值填充列表或数组

sql - 将字段值转换为列标题 - MS Access

ms-access - 在 MS Access 中禁用多行字段

mysql - MySQL数据库有关系约束时如何插入数据

sql - 关于多个内连接查询的帮助

php - 在此示例中如何从数据库中删除一行?

mysql - 检索和设置哪个更快?

ruby - 错误 : "in ` require': cannot load such file -- win32ole (LoadError)"while trying to connect from ruby program to ms access database