0

我有一个数字表(包含从网站传入的 some_table_line_ids 的 PLSQL 集合)。

然后我有 some_table 也有列 -> config_data, config_state

我想从数字表中的所有 table_id 中提取所有具有相同 table_id 的行。

我还想拉入与从第一部分拉入的每条记录具有相同 config_data 的所有行。

所以它是一种父/子关系。这可以在两个 for 循环中完成,方法是通过光标中的 id 选择一行,然后另一个 for 循环选择等于父配置数据的每一行。每个循环我都在每一行上执行数据操作。

我想将这两个组合成一个具有我需要的所有表 ID 的单个游标。那会是什么样子?

4

3 回答 3

0

您只想对不同的因素进行复杂的联接。就像是:

select st2.*
from numbers n join
     some_table st
     on st.table_id = n.table_id join
     some_table st2
     on st2.config_data = st.config_data

很可能,您实际上想要:

select distinct st.*

因为否则您可能会有重复项。或者,您可能想要:

select n.table_id, st.config_data, st2.*

因此,您知道哪个原始值负责引入该行。

于 2012-12-11T22:20:41.937 回答
0

我使用 start with 和 connect by prior 解决了这个问题。

于 2012-12-13T13:44:15.910 回答
0

您将数组描述为 PL/SQL 集合。如果您使用 SQL 类型,则可以使用 TABLE 函数将其包含在 FROM 子句中。

create type some_table_line_id_nt as table of number;

就像是:

select s.*
from some_table s
      join table(some_table_line_ids) t
          on s.id = t.column_value

(我没有提供完整的解决方案,因为您没有提供足够的表结构和数据详细信息。)

于 2012-12-11T22:26:26.007 回答