因此,有一个主表(名为Table1),该表中的一列有一个称为公司名称的列。还有另一个名为Account的表,该表中包含人员的用户名和与该用户关联的公司名称。因此,除非用户是管理员,否则仅应显示表1中与用户公司相关的信息。
因此,有一个主表(名为Table1),该表中的一列有一个称为公司名称的列。还有另一个名为Account的表,该表中包含人员的用户名和与该用户关联的公司名称。因此,除非他们是管理员,否则仅应显示表1中与用户公司相关的信息。
我正在使用Oracle上的APEX应用程序
我目前有一个看起来像这样的查询:
Select
SUPPLIER,
sum(NUMBER_OF_TICKETS) TICKETS,
round((sum(NUMBER_OF_TICKETS*AMOUNT_PAYABLE__FOREIGN_CUR)*.1),2) COMMISION,
round(sum(NUMBER_OF_TICKETS*AMOUNT_PAYABLE__FOREIGN_CUR),2) TOTAL_SALES,
round((sum(NUMBER_OF_TICKETS*AMOUNT_PAYABLE__FOREIGN_CUR)-(sum(NUMBER_OF_TICKETS*AMOUNT_PAYABLE__FOREIGN_CUR)*.1)),2) COMPANY_OWE,
CURRENCY
FROM TABLE1
WHERE
Supplier = (select COMPANYNAME from Account where lower(USERNAME)=lower(:APP_USER)) AND
PURCHASE_DATE_AND_TIME >= TO_DATE(:P2_START)
AND PURCHASE_DATE_AND_TIME < TO_DATE(:P2_END)+ 1
group by
SUPPLIER,
CURRENCY
我在使用“ WHERE”功能时遇到了麻烦。因为我基本上想拥有一个if ... then ...(或本例中的case语句)哪里如果(((从帐户中下级(USERNAME)=下级(:APP_USER)选择COMPANYNAME =='COMPANY1'AND(从帐户中下级(USERNAME)=下级(:APP_USER)=>'ADMIN'中选择USERTYPE)=='ADMIN']] >然后显示所有行; aka, 有人对如何为此编写查询有任何想法吗?我试着做情况语句当语句然后NULL供应商=(从查询中的低(USERNAME)=低(:APP_USER))的BBAccount中选择公司名称] >>
因此,有一个主表(名为Table1),该表中的一列有一个称为公司名称的列。还有另一个名为Account的表,该表中的用户名是...
因此,有一个主表(名为Table1),该表中的一列有一个称为公司名称的列。还有另一个名为Account的表,该表中包含人员的用户名和与该用户关联的公司名称。因此,除非用户是管理员,否则仅应显示表1中与用户公司相关的信息。
我认为您可以简单地加入-类似于:
SELECT ...
FROM TABLE1 t
INNER JOIN ACCOUNTS a
ON lower(a.username) = lower(:APP_USER)
AND (a.companyname = t.companyname OR a.usertype = 'ADMIN')
WHERE
t.purchase_date_and_time >= TO_DATE(:P2_START)
AND t.purchase_date_and_time < TO_DATE(:P2_END) + 1
GROUP BY ...
ACCOUNTS
上的内部联接在那里实现过滤逻辑:用户必须是该用户属于同一公司,或者具有管理员类型。
因此,有一个主表(名为Table1),该表中的一列有一个称为公司名称的列。还有另一个名为Account的表,该表中包含人员的用户名和与该用户关联的公司名称。因此,除非用户是管理员,否则仅应显示表1中与用户公司相关的信息。