0

私はこのようなテーブルを持っています

表-A

Conversion_logic       Output_param

func(a,b)               c

func(d)                 e

func(c)                 d

func(e)                 f

ここで行は、func(a,b) が "c" を与えることを示しています。この "c" は func(c) として適用され、"d" を与えます。この "d" は func(d) として適用され、私を与えます。 「e」と、この「e」が func(e) として適用され、「f」が得られます

だから私はこのような出力が欲しい

1) That row should be the first row whose output has no dependency.
2) From there it should follow parent child relation

Conversion_logic       Output_param
func(e)                f
func(d)                e
func(c)                d
func(a,b)              c
4

2 に答える 2

2

階層クエリを使用できます。

SELECT     table_name.*
  FROM table_name
CONNECT BY PRIOR conversion_logic = 'func(' || output_param || ')'
START WITH conversion_logic = 'func(e)';

アップデート:

SELECT     table_name.*
  FROM table_name
CONNECT BY PRIOR conversion_logic = 'func(' || ooutput_param || ')'
START WITH ooutput_param =
          (SELECT a.ooutput_param
             FROM table_name a
            WHERE 'func(' || a.ooutput_param || ')' NOT IN (
                                                 SELECT b.conversion_logic
                                                   FROM table_name b));

このクエリのパフォーマンスについてはわかりません。より効率的で優れたものがあるかもしれません。

于 2013-05-08T05:15:27.137 に答える
0

試す

SELECT t1.*
  FROM taba t1
  LEFT OUTER JOIN taba t2 ON instr(replace(t1.Conversion_logic, 'func'), t2.Output_param) > 0
START WITH t2.Conversion_logic IS NULL
CONNECT BY instr(replace(t1.Conversion_logic, 'func'), PRIOR t1.Output_param) > 0
ORDER BY LEVEL DESC

ここにsqlfiddleのデモがあります

于 2013-05-08T07:19:51.813 に答える