在使用 oracle apex 加载数据时,我应该查找其他表以匹配 id 并提取列值

Posted

技术标签:

【中文标题】在使用 oracle apex 加载数据时,我应该查找其他表以匹配 id 并提取列值【英文标题】:While data loading using oracle apex i should lookup to other table for matching id and pull a column value 【发布时间】:2015-10-01 16:45:48 【问题描述】:

我正在使用 Oracle Apex 4.2 构建应用程序。 t1 ---------------------- id 国家 1 美国 2 阿联酋 3 uk 下面的屏幕截图有“SUBJECT ID”,我应该将其与表“t2”进行比较,并在上传时提取“PRIMARY OWNER QID”详细信息。

t2
------------------------
id country
1   -
2   -
3  uk
4  UNk

基于 t1 表“SUBJECT_ID”应用程序应在报告/表单上加载“PRIMARY OWNER QID”详细信息。

我已经创建了一个表单来捕获表“t1”的详细信息,但需要创建一个导入向导来选择一个包含表“t2”详细信息的 .csv 文件。

我已使用 oracle 的默认功能“数据加载”将 .csv 文件导入应用程序,但我想将表“t2”与表“t1”连接起来,以便输出下表

t3
-------------------
id country
1  USA
2  UAE
3  UK

感谢各位朋友的帮助。

无法在“数据加载”选项中找到答案。我请求指导我在加载页面时/上传页面时执行此操作的简单步骤。

【问题讨论】:

t1 中的国家 UK 是否与 t2 中的 UNK 不同?还是打错字了? 嗨,克里斯蒂安,是的,来自 t2 的英国与 t2 中的 UNK 不同,ID 不同 获取t3背后的逻辑是什么?为什么在 t3 中没有来自 t1 的 id 为 3 的记录? 为拼写错误克里斯蒂安道歉,需要在上传与表 t2 的“ID”匹配的 csv 文件(“t2”数据)时将“国家”值获取到表“t3”,它应该输出“t3” ' 值 【参考方案1】:

嗨,我不知道我是否理解正确,但试试这个:

SELECT t2.id as ID, t1.country as COUNTRY FROM t1, t2 WHERE t1.id = t2.id ORDER BY t2.id

希望这会有所帮助。

【讨论】:

我已将上述 select 语句放在我的插入语句中,但我可以看到错误提示“值太多”。我需要将 sql 代码放在需要执行的数据验证页面中,而我使用 oracle 的默认功能执行“数据上传”。感谢您的回答@brenners1302【参考方案2】:

我建议修改显示导入向导“数据验证”过程的向导页面。然后您的用户可以自己使用该对话框。

对于 SQL 查询,您可以为您的 T3 数据做一个简单的查询:

INSERT INTO T3 (SELECT NVL(T2.ID, T1.ID) AS ID, NVL(T2.COUNTRY, T1.COUNTRY) AS COUNTRY FROM T2 LEFT JOIN T1 ON T1.ID= T2.ID)

您可以将其包含在流程中或将其用于一次性转换。

【讨论】:

谢谢@rarspace01 .. 我已经在进程部分尝试了上面的代码,但不幸的是它抛出错误无法处理它。 你能把错误告诉我们吗?然后我们可以修复它/我可以更正sql 感谢@rarspace01 的提问,我可以在进程窗口中看到以下错误。 “发生 1 个错误 ORA-06550:第 2 行,第 13 列:PL/SQL:ORA-00947:没有足够的值 ORA-06550:第 2 行,第 1 列:PL/SQL:忽略 SQL 语句”。 看起来您的 t3 结构与描述的不同。您能否将您的 DML(sql create)Skript 添加到问题中,以便我们拥有您的表结构。这将帮助我们为您编写合适的 sql 查询 感谢您的回复,我使用了您的查询但对其进行了一些修改,现在我可以动态获取值并更新我的表“t3”(即应用程序中的“apt_mdr_allocation”)update apt_mdr_allocation set primary_owner_qid = (SELECT primary_owner_qid FROM apt_mdr_subject_owner where subject_id = apt_mdr_allocation.subject_id),secondary_owner_qid = (select secondary_owner_qid from apt_mdr_subject_owner where subject_id = apt_mdr_allocation.subject_id), tertiary_owner_qid = ( select tertiary_owner_qid from apt_mdr_subject_owner where subject_id = apt_mdr_allocation.subject_id);跨度>

以上是关于在使用 oracle apex 加载数据时,我应该查找其他表以匹配 id 并提取列值的主要内容,如果未能解决你的问题,请参考以下文章

Oracle Apex 加载没有插件的 excel 数据 .xlsm

错误:尝试在空表中首次加载表中的 Excel 数据时,Oracle Apex 中的“表名已存在”

Oracle Apex - 动态检查不在报告中的复选框项目

Oracle Apex 根据 LOV 选择的值动态启用/禁用文本字段

从 Oracle Apex 页面获取多个值并将其存储在表中

oracle apex 在使用 INSERT INTO 向表中添加数据时给我一个错误