Es mucho mejor usar la sintaxis ANSI
SELECT *
FROM a
LEFT OUTER JOIN b ON( a.id = b.id and
b.val = 'test' )
También puede hacer lo mismo usando la sintaxis de Oracle, pero se vuelve un poco complicado
SELECT *
FROM a,
b
WHERE a.id = b.id(+)
AND b.val(+) = 'test'
Tenga en cuenta que en ambos casos, estoy ignorando la c
tabla ya que no especifica una condición de unión. Y asumo que realmente no desea unir A a B y luego generar un producto cartesiano con C.