2016-07-01 1 views
1

Je tableau (tableau A) comme ci-dessous,ORACLE - SQL - Autoréférence DANS LE TABLEAU

ID INDEX_ID 
1 1 
2 1.1 
3 1.1.1 
4 2 
5 3 
6 3.1 
7 3.2 

Je cherche à créer ensemble de résultats de telle sorte que

INDEX PARENT PARENT_ID 
1  0  0 
1.1 1  1 
1.1.1 1.1 2 
2  0  0 
3  0  0 
3.1 3  5 
3.2 3  5 

Est-ce que quelqu'un s'il vous plaît donner une idée de faire arriver avec cet ensemble de résultats en utilisant directement SQL?

Cordialement, Nandy

Répondre

1

Utilisez un autojointure:

SELECT t1.INDEX_ID AS INDEX, 
     COALESCE(t2.INDEX_ID, '0'), 
     COALESCE(t2.ID, '0') 
FROM TABLEA t1 
LEFT JOIN TABLEA t2 
    ON t1.INDEX_ID = SUBSTR(t2.INDEX_ID, 1, INSTR(t2.INDEX_ID, '.', -1) - 1)