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 № 1Você 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