このようなものはどうですか:
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;
COUNT()関数は、nullがある場合でも、すべての行をカウントします。 SUM()とCASEを使用すると、null以外の値のみをカウントできます。
編集:トップコメントから抜粋したより単純なバージョン:
SELECT m.MESSAGEID, COUNT(mp.MESSAGEID) FROM MESSAGE m
LEFT JOIN MESSAGEPART mp ON mp.MESSAGEID = m.MESSAGEID
GROUP BY m.MESSAGEID;
お役に立てば幸いです。