Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

有个团队,每次活动的人数不同,参加人员不同,活动的时长不同。怎么能快速统计出每个人参加活动的总时长?

月亮姐姐  发表于:2015-05-20 18:00:57  
复制

有个团队,每次活动的人数不同,参加人员不同,活动的时长不同。怎么能快速把每次活动的时长插入到参加活动人员的相关信息表中?

 

 

Top
煮江品茶 发表于:2015-05-20 20:36:51

无需插入。

可以这样得到人员活动的时长:

select a.*,b.活动ID,b.活动名称,datediff("h",b.开始时间,b.结束时间) as 时长

from 人员表 as a inner join 活动表 as b on a.人员ID=b.人员ID



月亮姐姐 发表于:2015-05-21 16:11:36

我可能没说清楚。再描述一遍:有多项活动,每次参加人员不同,每次活动时间长度也不同。怎么能快速地把参加的人员和时长输入到表格里?



煮江品茶 发表于:2015-05-21 18:02:21

我认为你说的很清楚了,呵呵。

其实,不需要在每个人参加活动的记录中记录参加的时长,除非每个人在某次活动中参加的时长不一致,如果存在这样的情况,也无法快速的输入,而只能一条一条记录的输入。

解决方案的核心是要用主子表。要设计成如下:

人员表:人员ID(主键),姓名,性别,生日,....

活动表:活动ID(主键),活动名称,起始时间,截止时间,....

参与表:参与ID(主键),活动ID(外键),人员ID(外键),....


要得到参与活动的人员的每次活动的时长,写查询:

select a.*,c.姓名,c.性别,c.年龄,b.活动名称,b.起始时间,b.截止时间,datediff("h",b.起始时间,b.截止时间) as 活动时长
from (参与表 as a inner join 活动表 as b on a.活动ID=b.活动ID) inner join 人员表 as c on a.人员ID=c.人员ID



杜超 发表于:2015-05-22 15:02:28
用更新或追加查询

月亮姐姐 发表于:2015-05-23 21:48:54
回复

总记录:5篇  页次:1/1 9 1 :