2017-01-19 5 views
1

у меня есть две таблицы со следующей структуройOracle SQL Иерархический запрос с двумя таблицами

Таблица 1:

PRODID | PSTID | 
___________________ 
1  | 4 
2  |  
3  | 2 
4  |  
5 |  

Таблица 2:

PSTID | PRODID 
_______________ 
1  | 4 
2  | 1 
3  | 1 
5  | 
  • Теперь я могу сказать, что Я начинаю с PRODID 1 (может быть любой)

  • Он должен получить присоединился к таблице 2 с T1.PRODID = T2.PRODID и привести к PSTID -> {2, 3}

  • Теперь соответствующие T2.PSTID, используются, чтобы начать следующий раунд в таблице 1, с T2.PSTID = T1.PSTID => {3}

  • Поскольку в настоящее время не существует более входа для PRODID = 3 в таблице 2 следует прекратить (но может продолжаться)

ответ

3
SELECT t1.* 
FROM table1 t1 
     INNER JOIN 
     table2 t2 
     ON (t1.prodid = t2.prodid) 
START WITH t1.prodid = 1 
CONNECT BY PRIOR t2.pstid = t1.pstid; 
+0

Большой работает отлично! – wasp256