解决方案 »

  1.   

    看得不是很明白,能否举例说明下
    假如我取table1的id 1,怎样得到结果,结果是啥
      

  2.   

    取table1的id 1的话,结果是:
      结果插入table3中
    id   questionid    answerid   sequence
    1            1                    1                 1
    2            1                    4                 2如果取table1的id为2的话,结果为:
    id   questionid    answerid   sequence   // sequence表示第几套方案。
    3            2                    1                  1
    4            2                    2                  1
    5            2                    3                  1
    6            2                    4                  2
    7            2                    5                  2
    8            2                    6                  2
    9            2                    1                  3
    10          2                    2                  3
    11          2                    6                  3
    12           2                   1                  4
    13           2                   2                  4
    14           2                   7                  4
    14           2                   8                  4
    12           2                   4                  5
    13           2                   5                  5
    14           2                   7                  5
    14           2                   8                  5
      

  3.   

    先写了一个只考虑value1的,参考
    v_value1为table1中value1的值
    SELECT RN,T2.* FROM(
      select PATH,ROW_NUMBER()OVER(ORDER BY PATH) AS RN from(
        select t2.*,sys_connect_by_path(id,',') path from t2
        start with startvalue1=13
        connect by prior endvalue1>v_value1
               and prior endvalue1>endvalue1
               and prior endvalue1<=startvalue1+1
               and prior startvalue1-1>=startvalue1)
      where v_value1 between endvalue1 and startvalue1) A,T2
    WHERE INSTR(A.PATH||',',','||T2.ID||',')>0;
      

  4.   

    按照10、7进行测试
    WITH T AS (
    SELECT A.PATH APATH,B.PATH BPATH,ROW_NUMBER()OVER(ORDER BY A.RN,B.RN) AS RN FROM
      (select PATH,ROW_NUMBER()OVER(ORDER BY PATH) AS RN,TR from(
        select t2.*,sys_connect_by_path(id,',') path,connect_by_root(id) tr
        from t2
        start with startvalue1=13
        connect by prior endvalue1>10
               and prior endvalue1>endvalue1
               and prior endvalue1<=startvalue1+1
               and prior startvalue1-1>=startvalue1)
      where 10 between endvalue1 and startvalue1) A,
      (select PATH,ROW_NUMBER()OVER(ORDER BY PATH) AS RN,TR from(
        select t2.*,sys_connect_by_path(id,',') path,connect_by_root(id) tr
        from t2
        start with startvalue2=13
        connect by prior endvalue2>7
               and prior endvalue2>endvalue2
               and prior endvalue2<=startvalue2+1
               and prior startvalue2-1>=startvalue2)
      where 7 between endvalue2 and startvalue2) B
    where a.tr=b.tr
    )
    SELECT T.RN,T2.* FROM T,T2
    WHERE INSTR(T.APATH||',',','||T2.ID||',')>0 OR INSTR(T.BPATH||',',','||T2.ID||',')>0
    ORDER BY T.RN,T2.ID;
    测试结果
            RN         ID STARTVALUE1  ENDVALUE1 STARTVALUE2  ENDVALUE2
    ---------- ---------- ----------- ---------- ----------- ----------
             1          1          13         10          13         12
             1          2           9          8          11         10
             1          3           7          5           9          6
             2          1          13         10          13         12
             2          2           9          8          11         10
             2          6           9          8           9          7
             3          1          13         10          13         12
             3          2           9          8          11         10
             3          7           9          7           9          8
             3          8           6          5           7          5
             4          1          13         10          13         12        RN         ID STARTVALUE1  ENDVALUE1 STARTVALUE2  ENDVALUE2
    ---------- ---------- ----------- ---------- ----------- ----------
             4          3           7          5           9          6
             4          5          11         10          12         10
             5          1          13         10          13         12
             5          5          11         10          12         10
             5          6           9          8           9          7
             6          1          13         10          13         12
             6          5          11         10          12         10
             6          7           9          7           9          8
             6          8           6          5           7          5
             7          2           9          8          11         10
             7          3           7          5           9          6        RN         ID STARTVALUE1  ENDVALUE1 STARTVALUE2  ENDVALUE2
    ---------- ---------- ----------- ---------- ----------- ----------
             7          4          13         12          13         12
             7          5          11         10          12         10
             8          2           9          8          11         10
             8          4          13         12          13         12
             8          5          11         10          12         10
             8          6           9          8           9          7
             9          2           9          8          11         10
             9          4          13         12          13         12
             9          5          11         10          12         10
             9          7           9          7           9          8
             9          8           6          5           7          5        RN         ID STARTVALUE1  ENDVALUE1 STARTVALUE2  ENDVALUE2
    ---------- ---------- ----------- ---------- ----------- ----------
            10          3           7          5           9          6
            10          4          13         12          13         12
            10          5          11         10          12         10
            11          4          13         12          13         12
            11          5          11         10          12         10
            11          6           9          8           9          7
            12          4          13         12          13         12
            12          5          11         10          12         10
            12          7           9          7           9          8
            12          8           6          5           7          5已选择43行。RN表示第几套方案