急求SQL

小飛不想飛 2016-01-19 10:20:53
下面主要是数据结构:


下面是要显示的结果:



--主要查的是Pub_OperateLog表,其他的表只是为了显示相关字段的。不相关的字段我隐藏掉了方便大家看
--用户表 Ucf_UserID:用户ID,RealName:用户名
select * from Ucf_User
--用户组表 RoleID:用户组ID,Name:用户组名称
select * from Sys_Role
--用户用户组关联表 UserID:用户ID,RoleID:用户组ID
select * from Sys_UserRole
--用户操作记录表 Pub_OperateLogID:主键ID,ModuleName:类型,LogType:记录类型(0:查看,1:回复),
--Scf_SiteBasicID:工点ID,Ucf_UserID:用户ID,LogTime:操作时间,CheckCount:数量集合(如果LogType=0,那么这个字段就是查看次数,LogType=1,那么这个字段就是回复次数)
select * from Pub_OperateLog

注:显示的字段中标题字段可以先不考虑

在线等,求大神!
...全文
229 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2016-01-19
  • 打赏
  • 举报
回复
把ModuleName栏位添加到结果集去 看看以上是否你要的效果
小飛不想飛 2016-01-19
  • 打赏
  • 举报
回复
引用 1 楼 roy_88 的回复:
文件类型/标题那里来的?
SELECT  
	c.Name AS 用户组名称
	,a.RealName AS 用户名
	,MAX(CASE WHEN d.LogType=0 THEN d.LogTime  END) AS 查看时间
	,SUM(CASE WHEN d.LogType=0 THEN d.CheckCount ELSE 0 END) AS 查看次数
	,MAX(CASE WHEN d.LogType=1 THEN d.LogTime END) AS 回复时间
	,SUM(CASE WHEN d.LogType=1 THEN d.CheckCount ELSE 0 END) AS 回复次数
FROM    Ucf_User AS a
        INNER JOIN Sys_UserRole AS b ON a.Ucf_UserID = b.UserID
        INNER JOIN Sys_Role AS c ON c.RoleID = b.RoleID
		INNER JOIN Pub_OperateLog AS d ON d.Ucf_UserID=a.Ucf_UserID 
GROUP BY c.Name,a.RealName
文件类型就是Pub_OperateLogID表的ModuleName,就相当于模块,数据库存的是一个模块枚举,只要取出枚举,我再在前台处理,然后字段那是前台拼出来的,可以先不管
Tiger_Zhao 2016-01-19
  • 打赏
  • 举报
回复
    SELECT r.Name 用户组,
u.RealName 用户,
a.最近查看时间,
a.查看次数,
a.最近回复时间,
a.回复次数
FROM (
SELECT Ucf_UserID,
MAX(CASE WHEN LogType=0 THEN LogTime ELSE NULL END) 最近查看时间,
SUM(CASE WHEN LogType=0 THEN CheckCount ELSE NULL END) 查看次数,
MAX(CASE WHEN LogType=1 THEN LogTime ELSE NULL END) 最近回复时间,
SUM(CASE WHEN LogType=1 THEN CheckCount ELSE NULL END) 回复次数
FROM Pub_OperateLog
GROUP BY Ucf_UserID
) a
JOIN Ucf_User u
ON a.Ucf_UserID = u.Ucf_UserID
LEFT JOIN Sys_UserRole ur
ON a.Ucf_UserID = ur.UserID
LEFT JOIN Sys_Role r
ON ur.RoleID = r.RoleID

看你的数据,一个用户不会有多个用户组吧?
直接把 RoleID 放在用户表去就行了,否则结果回有重复的(一个用户的操作统计到多个用户组下)。
中国风 2016-01-19
  • 打赏
  • 举报
回复
文件类型/标题那里来的?
SELECT  
	c.Name AS 用户组名称
	,a.RealName AS 用户名
	,MAX(CASE WHEN d.LogType=0 THEN d.LogTime  END) AS 查看时间
	,SUM(CASE WHEN d.LogType=0 THEN d.CheckCount ELSE 0 END) AS 查看次数
	,MAX(CASE WHEN d.LogType=1 THEN d.LogTime END) AS 回复时间
	,SUM(CASE WHEN d.LogType=1 THEN d.CheckCount ELSE 0 END) AS 回复次数
FROM    Ucf_User AS a
        INNER JOIN Sys_UserRole AS b ON a.Ucf_UserID = b.UserID
        INNER JOIN Sys_Role AS c ON c.RoleID = b.RoleID
		INNER JOIN Pub_OperateLog AS d ON d.Ucf_UserID=a.Ucf_UserID 
GROUP BY c.Name,a.RealName

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧