È molto meglio usare la sintassi ANSI
SELECT *
FROM a
LEFT OUTER JOIN b ON( a.id = b.id and
b.val = 'test' )
Puoi fare la stessa cosa anche usando la sintassi di Oracle, ma diventa un po' strano
SELECT *
FROM a,
b
WHERE a.id = b.id(+)
AND b.val(+) = 'test'
Nota che in entrambi i casi sto ignorando il c
tabella poiché non specifichi una condizione di join. E presumo che tu non voglia davvero unire da A a B e quindi generare un prodotto cartesiano con C.