查询未返回预期结果我错过了什么
Query not returning the intended results what am I missing
我有一个APEX 5.0 App
,将用于生成员工的名片。
我创建了一个名为 (P1_EMPLOYEE
) 的页面和 SELECT LIST
页面项目。它执行此数据库查询以填充 Select 列表。
select
EMPLOYEE.LASTNAME||', '||EMPLOYEE.FIRSTNAME as FULLNAME,
EMPLOYEE.SECTION AS SECTION
from
EMPLOYEE EMPLOYEE
ORDER BY
EMPLOYEE.LASTNAME asc;
当页面加载时,它会在 Select 列表中输入大约 900 名员工的姓名(例如 Doe、John、Doe、Jane 等...)。
此外,我还创建了一个名为 (Create) 的按钮,其中的动态操作设置为执行 Javascript(例如 window.open( 'f?p=&APP_ID.:0:&SESSION.:PRINT_REPORT=CreateBizCards' );
)。
上面的 CreateBizCards 是一个报表查询,我输入了
的 SQL 语法
select
EMPLOYEE.FIRSTNAME as "FIRST NAME",
EMPLOYEE.LASTNAME as "LAST NAME",
EMPLOYEE.TITLE as TITLE,
EMPLOYEE.SECTION as SECTION,
EMPLOYEE.OFFICE_PHONE as "OFFICE PHONE",
EMPLOYEE.EMAIL as "E-MAIL"
from
EMPLOYEE EMPLOYEE
where
EMPLOYEE.LASTNAME = :P1_EMPLOYEE;
当触发(创建)按钮时,假设会根据 SELECT LIST
中选择的员工姓名创建报告。
有两件事是不想要的结果。
首先,当“创建”按钮被触发时,它将生成一个具有相同姓氏的不同用户的报告。
其次,如果我在触发按钮时更改报告查询的 SQL 查询,它会生成一个只有列名而没有数据的 PDF。
我应该如何为 CreateBizCards 报告查询编写查询,以便它从页面项目的 SELECT 列表中找到所选员工(例如:P1_EMPLOYEE),然后 return 仅特定于该员工的数据?
注意:我无法共享 APEX URL,因为这是一个内部应用程序服务器。
Select 列表是其 LOV 需要 1 或 2 列的项目。第 1 列是显示值,第 2 列是 return 值。
这就是 "Help" 关于使用 SQL 查询值列表的内容(直接从 apex 5 的帮助中复制)
Enter the SQL query definition to populate this list of values.
Generally list of value queries are of the form:
select [displayValue],
[returnValue]
from ...
where ...
order by ...
Each column selected must have a unique name or alias. Oracle
recommends using an alias on any column that includes an SQL
expression.
Examples
List of values based on SQL query
select ename as d,
empno as r
from emp
order by 1
List of values with same display and return value
select ename d,
ename r
from emp
order by 1
Note: When selecting the same column for both the display and return
values use a column alias.
您的 select 列表项 (P1_EMPLOYEE
) 正在显示员工的 LASTNAME
和 FIRSTNAME
的串联。该项目是returning(=引用其会话状态时的值)员工的SECTION
,我认为这不是员工的姓氏或者是唯一键。
这意味着您的报告查询有一个 where 子句,它本质上是说“return LASTNAME
等于 SECTION
(P1_EMPLOYEE
) 的记录.
我建议您将 P1_ITEM
设置为:
Select e.lastname||', '||e.firstname as fullname,
[SOME UNIQUE ID] --replace with primary key
from employee e
order by e.lastname, e.firstname;
对于您的报告查询,您可能希望将 where 子句更改为如下内容:
where e.[SOME UNIQUE ID] = :P1_EMPLOYEE;
我有一个APEX 5.0 App
,将用于生成员工的名片。
我创建了一个名为 (P1_EMPLOYEE
) 的页面和 SELECT LIST
页面项目。它执行此数据库查询以填充 Select 列表。
select
EMPLOYEE.LASTNAME||', '||EMPLOYEE.FIRSTNAME as FULLNAME,
EMPLOYEE.SECTION AS SECTION
from
EMPLOYEE EMPLOYEE
ORDER BY
EMPLOYEE.LASTNAME asc;
当页面加载时,它会在 Select 列表中输入大约 900 名员工的姓名(例如 Doe、John、Doe、Jane 等...)。
此外,我还创建了一个名为 (Create) 的按钮,其中的动态操作设置为执行 Javascript(例如 window.open( 'f?p=&APP_ID.:0:&SESSION.:PRINT_REPORT=CreateBizCards' );
)。
上面的 CreateBizCards 是一个报表查询,我输入了
的 SQL 语法select
EMPLOYEE.FIRSTNAME as "FIRST NAME",
EMPLOYEE.LASTNAME as "LAST NAME",
EMPLOYEE.TITLE as TITLE,
EMPLOYEE.SECTION as SECTION,
EMPLOYEE.OFFICE_PHONE as "OFFICE PHONE",
EMPLOYEE.EMAIL as "E-MAIL"
from
EMPLOYEE EMPLOYEE
where
EMPLOYEE.LASTNAME = :P1_EMPLOYEE;
当触发(创建)按钮时,假设会根据 SELECT LIST
中选择的员工姓名创建报告。
有两件事是不想要的结果。
首先,当“创建”按钮被触发时,它将生成一个具有相同姓氏的不同用户的报告。
其次,如果我在触发按钮时更改报告查询的 SQL 查询,它会生成一个只有列名而没有数据的 PDF。
我应该如何为 CreateBizCards 报告查询编写查询,以便它从页面项目的 SELECT 列表中找到所选员工(例如:P1_EMPLOYEE),然后 return 仅特定于该员工的数据?
注意:我无法共享 APEX URL,因为这是一个内部应用程序服务器。
Select 列表是其 LOV 需要 1 或 2 列的项目。第 1 列是显示值,第 2 列是 return 值。
这就是 "Help" 关于使用 SQL 查询值列表的内容(直接从 apex 5 的帮助中复制)
Enter the SQL query definition to populate this list of values. Generally list of value queries are of the form:
select [displayValue], [returnValue] from ... where ... order by ...
Each column selected must have a unique name or alias. Oracle recommends using an alias on any column that includes an SQL expression.
Examples
List of values based on SQL query
select ename as d, empno as r from emp order by 1
List of values with same display and return value
select ename d, ename r from emp order by 1
Note: When selecting the same column for both the display and return values use a column alias.
您的 select 列表项 (P1_EMPLOYEE
) 正在显示员工的 LASTNAME
和 FIRSTNAME
的串联。该项目是returning(=引用其会话状态时的值)员工的SECTION
,我认为这不是员工的姓氏或者是唯一键。
这意味着您的报告查询有一个 where 子句,它本质上是说“return LASTNAME
等于 SECTION
(P1_EMPLOYEE
) 的记录.
我建议您将 P1_ITEM
设置为:
Select e.lastname||', '||e.firstname as fullname,
[SOME UNIQUE ID] --replace with primary key
from employee e
order by e.lastname, e.firstname;
对于您的报告查询,您可能希望将 where 子句更改为如下内容:
where e.[SOME UNIQUE ID] = :P1_EMPLOYEE;