Oracle - Weg vorbei an mehreren Knoten Struktur

stimmen
0

Ich habe folgende Oracle 12c Tabellen Struktur:

Tabelle 1:

path_id   node_name_1   node_name_1_para   node_name_2  node_name_2_para
-------------------------------------------------------------------
    1      node1         node1_val           node2        node2_val
    1      node2         node2_val           node1        node1_val
    1      node2         node2_val           node3        node3_val
    1      node3         node3_val           node2        node2_val
    1      node3         node3_val           node4        node4_val
    1      node4         node4_val           node3        node3_val
    2      node3         node3_val           node6        node6_val
    2      node6         node6_val           node3        node3_val

Tabelle 2:

path_id    start_node     end_node
-----------------------------------
   1         node1         node4
   2         node3         node6

wobei id eine Pfad-ID, die mehrere Knoten und node_name_1 hat und node_name_2 des Hopfens dieses Weges darstellen. so zum Beispiel path_id = 1 Starten von node1 und dem Ende in dem Knoten 4 (gemäß Tabelle 2), vorbei an node2 und node3 (gemäß Tabelle 1), während path_id = 2 von Knoten5 und endet in node6 starten. Wie Sie feststellen können, sind die in-zwischen Hopfen dupliziert.

Ich brauche diese Tabelle in der folgenden Struktur zu konvertieren:

    path_id   node_name   node_name_para  order
---------------------------------------------------
       1        node1       node1_val       1  
       1        node2       node2_val       2
       1        node3       node3_val       3  
       1        node4       node4_val       4  
       2        node3       node3_val       1  
       2        node6       node6_val       2  

können Sie einige Hinweise geben Sie mir, wie Sie vorgehen, da ich zu Orakel noch neu bin.

Veröffentlicht am 09/10/2019 um 18:59
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Ich bin nicht in der Lage hier jede Nutzung von table2 zu sehen. Sie können einfach Duplikate aus table1 sich wie folgt entfernen:

Select t.*, 
row_number() 
 over (partition by path_id order by to_number(replace(node_name, 'node', ''))) as order_
From
(Select distinct path_id,
Node_name,
Node_name_1_para
From table1) t
Order by path_id, order_;

Prost!!

Beantwortet am 09/10/2019 um 19:24
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more