【发布时间】:2017-09-22 16:45:42
【问题描述】:
我需要创建一个查询,显示我正在使用 Oracle R11 的“法律实体”、“应用程序名称”、“结束日期”和“期间”,现在我找到了
“法人实体”
SELECT name
FROM hr_organization_information HOI
INNER JOIN hr_all_organization_units HAOU
ON HOI.ORGANIZATION_ID = Haou.Organization_Id
WHERE HOI.org_information_context LIKE 'Legal Entity Accounting'
ORDER BY NAME ASC;
对于“申请名称、截止日期、期间”
SELECT A.APPLICATION_ID,
B.APPLICATION_NAME,
TO_CHAR(A.END_DATE,'HH24:MI DD-MON-YYYYI'),
A.PERIOD_NUM
FROM GL_PERIOD_STATUSES A
INNER JOIN FND_APPLICATION_TL B ON A.APPLICATION_ID = B.APPLICATION_ID
WHERE A.Application_Id=101
AND LANGUAGE='US'
OR A.APPLICATION_ID=200
AND LANGUAGE='US'
OR A.APPLICATION_ID=222
AND LANGUAGE='US';
单独但我还没有找到将它们加入一个查询的方法,你能帮我吗?
【问题讨论】:
-
您需要确定这些表是否以 PK/FK 方式关联或通过其他表关联。您始终可以“交叉连接”结果,因此每个法人实体名称都与来自第二个查询的所有记录相关联;但我怀疑这就是你所追求的。由于一个查询中没有表匹配另一个;我们无法弄清楚如何让它们联系起来。也许人力资源组织以某种方式与 FND 应用程序相关联?或者它与 GL Periods 相关联?没有这些细节真的无济于事。
organization_ID和Application_ID是否一起存在于同一张表中的某个地方? -
我会用它来检查两个列是否存在于同一个表中
SELECT Table_name FROM ALL_TAB_COLS WHERE COLUMN_NAME in ('ORGANIZATION_ID', 'APPLICATION_ID') GROUP BY Table_name HAVING count(Distinct COLUMN_NAME) > 1然后我会评估结果以确定哪些结果(如果有);最适合需要。如果这些都不起作用,那么您就没有直接关系,您必须查看 ERD 或依赖项,看看您是否可以找到一种方法来查看它们之间的关系。或询问系统架构师/参考现有源代码(ALL_SOURCE),看看您是否可以找到一种方法。 -
只是猜测,但就像 xQbert 一样,我怀疑应用程序(在 FND_APPLICATION_TL 表中)是由组织单位(来自 HR_ALL_ORGANIZATION_UNITS)提交的。要么是这样,要么是由在一个单位工作的个人提交的申请——在这种情况下,您需要通过第五张表关联所有内容,也许是 EMPLOYEES。现在,顺便说一句:第二个查询中的 WHERE 子句可以简化为
where a.application_id in (101, 200, 222) and language = 'US')(您可能应该使用表别名来限定language)。 -
为了进一步帮助您,最好了解相关表中的一些列名。特别是如果您可以(通过列名)判断申请是由单位提交还是由其他人/其他人提交。从该表中的主键列开始,如果有的话。
-
感谢大家,您的建议非常有用,我找到了答案。