Oracle11g 使用关联联接的SQL查询
我有一个要求“从基金表中选择其自身的基金id未作为基金表中其他行的替换基金id的所有行”。 每个基金记录都有使用旧状态和新状态创建的历史记录 每当某一特定基金经历作废过程(即旧状态变为新状态:null-->“已发行”-->“作废”-->“重新发行”)时,就会生成一个替代基金id 链接到原始记录,该原始记录被视为新的基金记录,历史记录为空-->“已发布”。 请参阅以下数据以了解更多说明 基金历史记录表: 列和数据是 基金\历史\ id基金\ id旧\状态新\状态 128 2444582空I 127 2445579 V R 124 2445579 I v 123 2445579零I 129 2445562空I 基金表: 列及其数据是 基金ID基金名称原始基金ID替换基金ID 2444582 ABC基金2444582空 2445579 ABC基金2445579 2444582 2445562 XYZ基金2445562空 请注意:根据我的要求,我必须从基金表24455792445562中选择原始基金ID 由于2444582作为替换基金id链接到基金表中的任何其他记录,我必须忽略此记录,但选择2445579,因为这是带有 其中一条历史记录“null”到“issued”。另外,2445562在历史记录中也没有链接的任何替换记录,因此我需要选择此记录作为 嗯 有人能给我提供考虑性能的问题吗 如果有任何细节不清楚,请告诉我 问候Oracle11g 使用关联联接的SQL查询,oracle11g,oracle-sqldeveloper,Oracle11g,Oracle Sqldeveloper,我有一个要求“从基金表中选择其自身的基金id未作为基金表中其他行的替换基金id的所有行”。 每个基金记录都有使用旧状态和新状态创建的历史记录 每当某一特定基金经历作废过程(即旧状态变为新状态:null-->“已发行”-->“作废”-->“重新发行”)时,就会生成一个替代基金id 链接到原始记录,该原始记录被视为新的基金记录,历史记录为空-->“已发布”。 请参阅以下数据以了解更多说明 基金历史记录表: 列和数据是 基金\历史\ id基金\ id旧\状态新\状态 128 2444582空I 127
rajesh考虑了两个表hist和fund。所需查询为:
select *
from fund f, hist h
where f.FUND_ID=h.FUND_ID and f.fund_id is not null
and f.FUND_ID not in (select nvl(REPLACEMENT_FUND_ID,'0') from fund)
and h.OLD_STATUS is null and h.NEW_STATUS='I';
任何人都可以向我提供查询。我已经准备好了查询,但需要我的同事提供一些信息,以比较是否有更好的方法进行查询?