проблема возникает в последнем условии, где левый операнд является столбцом, является ли правый операнд подзапросом для внешнего присоединенного запроса:
AND t3.dummyfield = ( SELECT 3 FROM dual );
, если вы измените эту часть следующим образом:
WHERE t3.dummyfield = ( SELECT 3 FROM dual );
Ваша проблема будет решена.
Ваш рабочий запрос будет:
SELECT *
FROM table1 t1
LEFT JOIN table2@myLink t2
ON t1.key_field = t2.key_field
LEFT JOIN
(SELECT a.*,3 dummyField
FROM table3@myLink a) t3
ON T1.key_key = t3.key_Field
WHERE t3.dummyfield = ( SELECT 3
FROM dual
);
PS: обратите внимание, что оба ваших запроса имеют синтаксическую ошибку на втором операнде LEFT JOIN ON,PS: обратите внимание, что ваш второй запрос не работает так же с JOIN (SELECT * FROM table2@myLink) t2