so würde ich das lösen
wenn du nur die angezeigt haben willst die wirklich fehlerhafte Haben dann lass das "left outer" weg.
select prot.id, prot.datum, count(distinct erg.id) Anzahl
from Protokolle prot
left outer join ergebnisse erg on (prot.id = protokolldatei_id)
where ergebniss > 0
group by prot.id, prot.datum;