Você está muito melhor usando a sintaxe ANSI
SELECT *
FROM a
LEFT OUTER JOIN b ON( a.id = b.id and
b.val = 'test' )
Você também pode fazer a mesma coisa usando a sintaxe do Oracle, mas fica um pouco complicado
SELECT *
FROM a,
b
WHERE a.id = b.id(+)
AND b.val(+) = 'test'
Observe que em ambos os casos, estou ignorando o
c
table já que você não especifica uma condição de junção. E estou assumindo que você realmente não quer unir A a B e então gerar um produto cartesiano com C.