我有两个表,其中一个包含来自某些应用程序的访问历史记录,另一个包含执行这些访问的用户的访问历史记录。基于两个表的复杂查询
ACCESS_HISTORY
WORKSPACE - APP_ID - APP_NAME - USERNAME
WS_1 1 APP_NAME USER_1
WS_1 1 APP_NAME USER_2
WS_2 1 APP_NAME USER_3
WS_3 2 APP_NAME USER_1
USERS
WORKSPACE - USERNAME - IS_ADMIN - IS_DEVELOPER
WS_1 USER_1 YES NO
WS_1 USER_2 NO YES
WS_2 USER_3 NO NO
WS_3 USER_1 NO YES
我想执行一个SELECT
查询来获取每个应用程序(详细登记信息acc_general
是获得来自谁不是管理员或开发人员的用户数量,acc_adm
是从管理用户的访问,acc_dev
是从开发用户的访问,并acc_total
一般,ADM和DEV访问)的总和:
WORKSPACE APP_NAME APP_ID ACC_GENERAL ACC_ADM ACC_DEV ACC_TOTAL
WS_1 APP_NAME 1 0 1 1 2
WS_2 APP_NAME 1 1 0 0 1
WS_3 APP_NAME 2 0 0 1 1
需要注意的是:
- 在
access_history
中,当工作空间和app_id
相同时,访问引用相同的应用程序。两个应用程序可能具有相同的ID,但位于不同的工作区中。 - 每个
USERNAME
都是指同一个用户,但用户可能是管理员或开发人员,并且只能是另一个工作区上的简单用户。 - 真正的数据库包含许多行(700K +上
ACCESS_HISTORY
和USERS
5K)等多个栏目,但现在这并不重要。 - 我正在使用Oracle数据库。
- 如果有人想请编辑我的问题标题更多的拨款(我想不出一个更好的)。
什么是您当前的查询是什么样子?什么部分给你带来麻烦? –