Du er meget bedre stillet ved at bruge ANSI-syntaksen
SELECT *
FROM a
LEFT OUTER JOIN b ON( a.id = b.id and
b.val = 'test' )
Du kan også gøre det samme ved at bruge Oracles syntaks, men det bliver en smule hinkey
SELECT *
FROM a,
b
WHERE a.id = b.id(+)
AND b.val(+) = 'test'
Bemærk, at jeg i begge tilfælde ignorerer c
tabel, da du ikke angiver en joinbetingelse. Og jeg går ud fra, at du ikke rigtig ønsker at forbinde A til B og derefter generere et kartesisk produkt med C.