Если у вас есть таблицы:
CREATE TABLE tt ( h_no ) AS
SELECT 1 FROM DUAL;
CREATE TABLE mth ( m_no ) AS
SELECT 1 FROM DUAL;
CREATE TABLE mtk ( m_no ) AS
SELECT 1 FROM DUAL;
Тогда запрос:
select h_no,
( select mth.m_no
from mth
inner join mtk
on ( MTH.M_NO=MTK.M_NO
AND MTH.M_NO = tt.H_NO )
) maliyet
from tt;
Дает исключение:
ORA-00904: "TT"."H_NO": invalid identifier
Но если вы переместите условие фильтра, которое вы используете для корреляции, из условия JOIN
в условие WHERE
(на внешнем уровне коррелированного подзапроса):
select h_no,
( select mth.m_no
from mth
inner join mtk
on ( MTH.M_NO=MTK.M_NO )
WHERE MTH.M_NO = tt.H_NO
) maliyet
from tt;
Тогда результаты запроса:
H_NO | MALIYET
---: | ------:
1 | 1
db <> fiddle здесь
Если вы обновитесь до более современной версии Oracle db <> fiddle , тогда ваш коррелированный запрос работает.
Кроме того, CHARINDEX
не является функцией Oracle. Вместо этого вам нужно использовать INSTR
.