【问题标题】:Oracle APEX interactive Grid displays too many duplicatesOracle APEX 交互式网格显示太多重复项
【发布时间】:2018-09-13 20:36:08
【问题描述】:

我有 3 个表:Employees、Locations 和 EmpLocation

  • Employees 以 Employee_ID 作为主键存储员工数据,
  • Lo​​cations 使用 Location_ID 存储位置数据。
  • EmpLocation 存储 Employee_ID 和 Location_ID。每个员工可以有多个位置。

我创建了一个基于 EmpLocation 表中的数据的交互式网格:

SELECT EMPLOYEE_ID, LOCATION_ID
FROM EmpLocation
GROUP BY EMPLOYEE_ID, LOCATION_ID

然后我将每一列设置为选择列表并使用SQL查询作为来源:

SELECT Employee_FName, Employee_ID FROM Employees

SELECT LocationName, Location_ID FROM Locations

一切看起来都很好,但是当我运行查询时

SELECT EMPLOYEE_ID, LOCATION_ID
FROM EmpLocation
GROUP BY EMPLOYEE_ID, LOCATION_ID

在 TOAD 中,我得到了大约 100 条记录;但在网格中我得到了很多重复项。无法弄清楚发生了什么......

【问题讨论】:

    标签: oracle-apex-5.1


    【解决方案1】:

    为什么首先允许在 EmpLocation 表中存在重复项?保留有什么意义

    Littlefoot        Croatia        --> this ...
    Coding Duchess    Somewhere
    Littlefoot        Croatia        --> ... and this are duplicates
    

    创建唯一索引

    create unique index ui_emploc on emplocation (employee_id, location_id);
    

    这样做,您可以避免当前使用的group by 子句。不过,你为什么要使用它? 通常获取不同值的方式有什么问题,即

    select distinct employee_id, location_id
    from emplocation;
    

    Apex 及其各种交互式网格的乐趣(虽然它看起来很漂亮,但我仍然更喜欢表格形式):如果您创建经典报告(而不是交互式网格)会发生什么 - 您是否仍然看到重复?

    【讨论】:

    • 但问题是 EmpLocation 表中没有重复项。每个员工可以有多个位置,但不能重复。 (例如:Littlefoot - 克罗地亚、Littlefoot - 法国)
    • 我正在使用 IG,因为我将进行插入和更新,而 IG 拥有所有这些功能等等
    • 我想我弄明白了——每一列我都做了一个选择列表,我一定是设置错误了,它弄乱了网格。因为如果我删除选择列表并使每一列成为一个文本框,我会得到大约 100 条记录,就像我应该做的那样
    • 好的,很高兴你修好了。
    【解决方案2】:

    尽管在 Toad 中测试的报告查询结果不包含重复行,但在 IG 中显示的重复行我也遇到了同样的问题。我发现的原因: 如果在 IG 中使用 Select List 并且 Select List 有重复项,则 IG 会显示此错误行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      • 2023-01-11
      • 2021-09-17
      相关资源
      最近更新 更多