/ / Table alias não é reconhecido na subconsulta Oracle - sql, oracle, join, subquery, alias

O alias de tabela não é reconhecido na subconsulta Oracle - sql, oracle, join, subquery, alias

Eu tenho a instrução SELECT com o LEFT JOIN e entreitabelas são subconsultas. E o Oracle não pôde reconhecer o alias da primeira subconsulta no segundo. Ele funciona para o DB2, mas não funciona para o Oracle. Como posso implementá-lo ou reescrever minha consulta?

SELECT *
FROM
(SELECT     E.C3 AS  COLUMN3
, E.C4 AS  COLUMN4
FROM TBL_1 D
, TBL_2 E
WHERE D.C6  =  E.C6 ) B
LEFT  JOIN  TABLE
(SELECT  C.C1
FROM    TBL_3  C
WHERE
C.C7            = "hello"
AND B.C3            = C.C8
UNION ALL
SELECT  C.C1
FROM    TBL_3  C
WHERE
C.C7          = "world"
AND B.C4          =  C.C8
)            A
ON 1 = 1

Mensagem de erro da Oracle: ORA-00904: "B". "C3": identificador inválido

Respostas:

4 para resposta № 1

Você pode simplificar essa consulta para o seguinte, removendo as subconsultas:

Select      A.Col1, B.Col2
From        tbl_AJoin   A
Left Join   tbl_BJoin   B   On  A.col1 = B.col1

1 para resposta № 2

Você tem um erro de sintaxe. Este:

select * from (select col1 from tbl_Ajoin) A
left join table (select col2 from tbl_Bjoin where A.col1 = tbl_Bjoin.col1) B
ON 1 = 1

deveria ser isso:

select * from (select col1 from tbl_Ajoin) A
left join (select col2 from tbl_Bjoin where A.col1 = tbl_Bjoin.col1) B
ON 1 = 1

ou mais especificamente, isso:

left join table (select

não deve ter a palavra table. Deve ser isso:

left join (select