0

我有一个需要身份验证才能登录的 oracle apex 注册表数据库。这很好用。用于验证用户的表称为 'tuser' ,该表具有用户名、密码和部门

三个例子如下

username           password               department
x                     123                    home
y                     123                    home
z                     123                    work

我的问题是我在查询中使用:appuser,因此当每个用户登录时,他们会看到各自的订单,但是我希望用户也能看到与其部门有关的订单。

所以我希望XY看到“家庭”订单以及他们的个人订单,我希望Z只看到他的订单,因为他来自另一个部门。

我有三个相互链接的表

 table 1- Registry         Table 2- Outgoing       table 3-Tuser

  filenuber            filenumber                    username
  filename             department                   department 
                       requestedby

这些只是重要的领域。

select OUTGOING.FILENUMBER as FILENUMBER,
REGISTRY.FILENAME as FILENAME,
OUTGOING.DEPARTMENT as DEPARTMENT,

from REGISTRY REGISTRY,
OUTGOING OUTGOING,
TUSER TUSER 
where REGISTRY.FILENUMBER(+) =OUTGOING.FILENUMBER
and OUTGOING.DEPARTMENT(+) =TUSER.department
and outgoing.requestby (+) = TUSER.username

这是我尝试过的,但所有用户都能看到数据。如果我添加

select OUTGOING.FILENUMBER as FILENUMBER,
REGISTRY.FILENAME as FILENAME,
OUTGOING.DEPARTMENT as DEPARTMENT,

from REGISTRY REGISTRY,
OUTGOING OUTGOING,
TUSER TUSER 
where REGISTRY.FILENUMBER(+) =OUTGOING.FILENUMBER
and OUTGOING.DEPARTMENT(+) =TUSER.department
and outgoing.requestby (+) = TUSER.username
AND outgoing.Department  =:APP_USER

这将意味着因为 x提出了请求而 y 并没有只有x会看到他的请求,即使y在同一个部门。

我想得到的是当X提出请求时,即使Y没有提出请求,Y也必须看到它,这是因为Y在同一个部门

4

1 回答 1

0

这样可以吗?在 Apex 中,第 20 行将是where u.username = :APP_USER;(这是 SQL*Plus 示例)。

SQL> with
  2  tuser (username, department) as
  3    (select 'x', 'home' from dual union all
  4     select 'y', 'home' from dual union all
  5     select 'z', 'work' from dual
  6    ),
  7  registry (filenumber, filename) as
  8    (select 100, 'file 1' from dual union all
  9     select 200, 'file 2' from dual
 10    ),
 11  outgoing (filenumber, department, requestedby) as
 12    (select 100, 'home', 'x' from dual union all
 13     select 200, 'work', 'z' from dual
 14    )
 15  select r.filenumber,
 16         r.filename,
 17         o.requestedby
 18  from registry r join outgoing o on o.filenumber = r.filenumber
 19                  join tuser u on u.department = o.department
 20  where u.username = '&APP_USER';
Enter value for app_user: x

FILENUMBER FILENA R
---------- ------ -
       100 file 1 x

SQL> /
Enter value for app_user: y

FILENUMBER FILENA R
---------- ------ -
       100 file 1 x

SQL> /
Enter value for app_user: z

FILENUMBER FILENA R
---------- ------ -
       200 file 2 z

SQL>
于 2019-08-06T20:44:30.683 回答