У меня есть 2 таблицы. Первая содержит ссылку на вторую таблицу, тогда как вторая таблица - это саморефлексия.
Ниже таблица выборкиOracle подключается с вложенными подзапросами
Table_P
-----------------------------
P_ID P_TOKEN FID
-----------------------------
1 P1 F1
2 P2 F2
3 P3 F3
4 P4 F4
-----------------------------
и
Table_F
----------------------------------
F_ID F_TOKEN PARENT_TOKEN
----------------------------------
1 F1 F2
2 F2 F3
3 F3 null
4 F4 null
----------------------------------
Результат Ожидаемого
---------------------
P_TOKEN F_TOKEN
---------------------
F1 F3
F2 F3
F3 F3
F4 F4
---------------------
Выберите Запрос
SELECT p.P_TOKEN,
(select F_TOKEN from
(select tF.F_TOKEN, tF.PARENT_F from TABLE_F tF
connect by tF.F_TOKEN = prior tF.PARENT_TOKEN start with tP.FID = tF.F_ID)
where PARENT_F is null
) as "F Value" FROM TABLE_P tF
Но делать это бросает exceptio n
ORA-00904: "tP"."FID": invalid identifier
Просьба предлагать работу вокруг. Большое спасибо.
Вы видите "tP". "FID" в вашем запросе? Я не. – kevinsky
Ну, в запросе есть «tP.FID» (строка 4, столбец 66), но не цитируется как «tP» '; но если вы запустите это, он жалуется на «P». «P_TOKEN» «сначала так или иначе, поскольку у вас нет ни одного псевдонима как' p'. Каков ваш полный фактический запрос и соответствующая ошибка ?. –
Глядя на данные, столбец FID в таблице_P не может быть присоединен к F_ID из Table_F в любом случае (если вы намерены присоединиться к двум таблицам, которые вы не делаете), так как один из них является числом, а другой - VARCHAR2. В результате почему столбец P_Token имеет такие значения, как F1, F2, ... вместо P1, P2, ... Было бы хорошо, если бы вы могли объяснить объяснение логики результата, потому что на данный момент кажется, вы просто находите конечного родителя F_Token, идущего к корню и возвращающего тот же самый элемент, если он равен нулю. Это можно сделать только из таблицы Table_F. – ruudvan