0

数値のテーブルがあります (Web サイトから渡された some_table_line_ids を含む PLSQL コレクション)。

次に、some_tableにも列があります-> config_data、config_state

数値テーブルのすべての table_ids から同じ table_id を持つすべての行を取得したい。

また、最初の部分から取得した各レコードと同じ config_data を持つすべての行を取得したいと考えています。

だから親子関係。これは、カーソル内の ID で行を選択し、次に別の for ループで親構成データに等しい各行を選択することにより、2 つの for ループで実行できます。各ループでは、各行でデータ操作を実行しています。

これらの両方を、必要なすべてのテーブル ID を持つ単一のカーソルに結合したいと考えています。それはどのように見えるでしょうか?

4

3 に答える 3

0

start with and connect by beforeを使用して問題を解決しました。

于 2012-12-13T13:44:15.910 に答える
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

配列を 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 に答える