【问题标题】:Diplaying a value from another column in the same table in Oracle APEX在 Oracle APEX 中显示同一表中另一列的值
【发布时间】:2022-01-12 11:05:32
【问题描述】:

我在 Oracle APEX 上苦苦挣扎。 我有一个带试运行的 Shuttle 盒子。最重要的是,我有一个过滤器,可以根据 Project 过滤它们。 当我选择“所有项目”时,我的测试运行正确显示,如下所示:

但是 当我将过滤器更改为特定项目时,右侧的穿梭窗口将停止显示测试运行的名称,而是显示测试运行的 ID

我对此配置的查询是:

select name as d, test_run_id as r From test_run 
Where project_jira_key=coalesce(:TR_BASED_ON_PROJECT, project_jira_key) 
and folder_id NOT IN(select folder_id 
from folder where name in (select column_value from table (apex_string.split(config.get('ATM_DASHBOARD_CONFIGURATION_FOLDER_EXCLUDE'), ','))));

总的来说,我对 APEX 和 SQL 还是很陌生,但我认为“r”是右侧的返回值?我还假设“test_run_id as r”应该保留在那里,因为 test_run_id 是该表的主键。有没有办法显示 test_run.name?它是同一个表中的一列。 提前致谢

【问题讨论】:

    标签: sql oracle-apex


    【解决方案1】:

    穿梭组件在右侧显示页面组件中的值,并根据组件源在右侧显示其余可用值。这是一个小例子来说明它是如何在 emp/dept 数据集上工作的。

    • 创建一个空白页,其中包含静态区域和类型为“Shuttle”的 P1_EMP 页面项,源为“SQL Query”和源:
    SELECT ename, empno FROM emp
    

    运行页面。请注意,您可以选择右侧的员工姓名列表。右侧为空。

    • 在 P1_EMP 上创建静态值和值“7566:7788”的前区域计算 - 这些是 JONES 和 SCOTT 的 empno 值,以冒号分隔的列表表示(apex 如何处理多选值)

    运行页面。请注意,现在选择了 JONES 和 SCOTT。左侧显示所有其他值。 发生的情况是,apex 引擎检查了组件的结果集(员工编号),并根据源查询呈现了穿梭车两侧的显示值(员工姓名)

    现在将 P1_EMP 上的源查询更改为

    SELECT ename, empno FROM emp WHERE ename IN ('KING','ADAMS')
    

    运行页面。请注意,右侧现在的值是 7566 和 7788。在源查询结果集中这些值没有对应的值,因此 id 显示为它们的源值。

    因此,您可以解释为什么您会在班车右侧看到数值。这些值在页面项目中,但不在过滤查询的结果集中。问题是你想要什么行为

    • 不显示不在查询中的值。 解决方案:将属性“显示额外值”设置为“关闭”。
    • 在右侧显示 id 的返回值,即使它们没有出现在源查询中。 解决方案:更改查询,使其包含页面项目中已有的值。这可以通过向查询添加一个联合来实现,该查询显示没有过滤器的所有结果。 UNION 子句将过滤掉存在的重复值:
    SELECT ename, empno FROM emp WHERE ename IN ('KING','ADAMS')
    UNION ALL
    SELECT ename, empno FROM emp WHERE empno IN (select column_value from table (apex_string.split(:P54_EMP, ':')))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-11
      相关资源
      最近更新 更多