归心小贩
2015-06-09 16:57:07
等
SQL如何根据部门或用户的可变查询参数来查询文件信息?
请问一下,文件表(file) ,部门表(department),用户表(user).
file表字段:id,userid(文件所有者),viewcount(查看次数,默认0),download(下载次数,默认0)等
user表字段:id,did,uname,code等
department表字段:id,dname等
现在需要查询文件的:未查看总数,未下载总数,部门名称,用户名称,用户编号(code)等信息,关键是条件不好带上.
第一种情况:不带查询条件,根据部门分组,查询上面的信息,此情况用户名称和用户编号是查询不出来的.
第二种情况:根据某部门中用户分组查询上面的信息,
第三种情况:根据单个用户查询上面的信息.
该怎么查询啊,请大神帮忙了!如有不明白的请下方留言...
评论
所有回答列表(2)
遇见, LV36
2015年6月10日
大致写了个 你看看符合么
1 先写出查询的基础数据 将按人和按部分分组数据先查询出来。
SELECT A.DNAME, B.UNAME, B.CODE, C.VIEWCOUNT, SUM(C.VIEWCOUNT) OVER(PARTITION BY A.ID) GROUP_VIEWCOUNT, C.DOWNLOAD, SUM(C.DOWNLOAD) OVER(PARTITION BY A.ID) GROUP_DOWNLOAD FROM TMP_DEPARTMENT A LEFT JOIN TMP_USER B ON A.ID = B.DID LEFT JOIN TMP_FILE C ON B.ID = C.USERID WHERE 1 = 1
查询结果如下:
2、 将以上数据作为基表查询。
如果你需要以部门分组来显示,那么SQL为:
SELECT DISTINCT T.DNAME, T.GROUP_VIEWCOUNT VIEWCOUNT, T.GROUP_DOWNLOAD DOWNLOAD FROM (SELECT A.DNAME, B.UNAME, B.CODE, C.VIEWCOUNT, SUM(C.VIEWCOUNT) OVER(PARTITION BY A.ID) GROUP_VIEWCOUNT, C.DOWNLOAD, SUM(C.DOWNLOAD) OVER(PARTITION BY A.ID) GROUP_DOWNLOAD FROM TMP_DEPARTMENT A LEFT JOIN TMP_USER B ON A.ID = B.DID LEFT JOIN TMP_FILE C ON B.ID = C.USERID WHERE 1 = 1) T
查询结果如下:
反之, 如果你根据用户来分组的话, SQL为:
SELECT T.DNAME, T.UNAME, T.CODE, T.VIEWCOUNT, T.DOWNLOAD FROM (SELECT A.DNAME, B.UNAME, B.CODE, C.VIEWCOUNT, SUM(C.VIEWCOUNT) OVER(PARTITION BY A.ID) GROUP_VIEWCOUNT, C.DOWNLOAD, SUM(C.DOWNLOAD) OVER(PARTITION BY A.ID) GROUP_DOWNLOAD FROM TMP_DEPARTMENT A LEFT JOIN TMP_USER B ON A.ID = B.DID LEFT JOIN TMP_FILE C ON B.ID = C.USERID WHERE 1 = 1) T
查询结果如下:
对了, 还有一种情况 具体查询某个人 或者 某个部门 在基表where 1=1 后面拼接你的查询条件即可。
你要在程序里只需要判断是根据部门分还是根据人员分组
如果是根据部门 在基表前面加
SELECT DISTINCT T.DNAME, T.GROUP_VIEWCOUNT VIEWCOUNT, T.GROUP_DOWNLOAD DOWNLOAD FROM
如果是根据人员则加
SELECT T.DNAME, T.UNAME, T.CODE, T.VIEWCOUNT, T.DOWNLOAD FROM
- 等 最代码怎么获取牛币啊?
- 完 谁来告诉我最代码上线的时间,答对者给5牛币,先来先得
- 等 牛友们,大家好,你们做程序员多久了?现在还好吗?
- 完 在微信打开的页面里进行app下载
- 等 最代码2014年欢乐聚声会
- 完 mysql如何查询表数据并且对3个字段降序的SQL?
- 完 最代码牛币机制改革
- 完 成功的在bae上使用了自定义运行环境 jetty+nginx的组合,大家对jetty+nginx优化有哪些心得?
- 完 进来分享一下各位牛牛是如何加入最代码大家庭的?
- 等 为什么java BufferedImage类处理大图直接抛出内存溢出的异常?
- 等 最代码是否开发手机app客户端?
- 完 java程序员学习哪些java的技术?java有哪些框架?都能做哪方面的开发?
- 等 php格式网页文件怎么运行?
- 等 Java volatile值获取的问题
- 等 前端vue,拦截了登录后台后,返回的token,requests拦截token,但是发送请求的时候,就出现跨越异常
- 等 大专本科计算机科班怎么找到Java工作?
- 等 eclipse怎么把三个java swing游戏项目合成一个项目?
- 完 伙伴们,大家都有什么好的解压方式么,分享一下~
- 完 三四线城市,6、7k,运维工作,索然无味,想去辞职上培训,各位牛牛有什么建议嘛
- 等 jsp页面输入中文变成问号
- 等 JPA在线上运行一段时间后报错Caused by: java.lang.IncompatibleClassChangeError: null
- 等 PHP 这个规则用preg_match_all怎么写
- 等 大佬们,有没有知道Alfresco如何配置LDAP登录呢?
- 等 php的install目录是框架带的吗?
相关问答
- 完 sql语句如何实现如下的条件查询需求
- 等 sql语句 group by 后面的字段 要必须 与 select 后面的字段(除聚合函数) 保持一致吗??
- 等 sql怎么把查询结果中字符串分割赋值到另外两列?
- 等 mybatis sql复杂查询问题
- 等 sql复杂查询语法的mysql性能如何优化?
- 完 sql语句如何直接截取某个字段下的部分值?
- 等 sql如何实现用户表查出所有上级?
- 完 sql如何新增一列并设置成主键?
- 等 SQL文件打开执行的时候总是会出现问题,无法全部通过,触发器无法创建?
- 完 mysql sql查询语句优化问题
- 等 mysql sql查询转换为mongoDB NOSQL的脚本
- 完 撒花时刻到了...求各位牛牛解决..关于sql查询语句的问题
最近浏览
小二上代码 LV8
2019年9月10日
jw123456
2018年7月25日
暂无贡献等级
ytzzz_zuidaima LV3
2018年1月12日
真人 LV5
2017年9月19日
jeety太阳雨 LV14
2017年1月9日
newt1050
2016年7月18日
暂无贡献等级
樱花满天 LV24
2016年2月24日
m492571154 LV1
2015年11月26日
lixiaodong LV2
2015年7月6日
chriss LV27
2015年6月29日