Hvad med sådan noget her:
SELECT m.MESSAGEID, sum((case when mp.messageid is not null then 1 else 0 end)) FROM MESSAGE m
LEFT JOIN MESSAGEPART mp ON mp.MESSAGEID = m.MESSAGEID
GROUP BY m.MESSAGEID;
Funktionen COUNT() tæller hver række, selvom den har null. Ved at bruge SUM() og CASE kan du kun tælle værdier, der ikke er nul.
EDIT:En enklere version taget fra den øverste kommentar:
SELECT m.MESSAGEID, COUNT(mp.MESSAGEID) FROM MESSAGE m
LEFT JOIN MESSAGEPART mp ON mp.MESSAGEID = m.MESSAGEID
GROUP BY m.MESSAGEID;
Håber det hjælper.