Zliczanie liczby połączonych rzędów w lewym połączeniu

Próbuję napisać zagregowane zapytanie w języku SQL, które zwraca liczbę wszystkich rekordów dołączonych do danego rekordu w tabeli; Jeśli do danego rekordu nie dołączono żadnych rekordów, wynik dla tego rekordu powinien być0:

Dane

Moja baza danych wygląda tak (niestety nie mogę zmienić struktury):

MESSAGE
----------------------------------------------
MESSAGEID   SENDER        SUBJECT
----------------------------------------------
1           Tim           Rabbit of Caerbannog
2           Bridgekeeper  Bridge of Death

MESSAGEPART
----------------------------------------------
MESSAGEID   PARTNO        CONTENT
----------------------------------------------
1           0             (BLOB)
1           1             (BLOB)
3           0             (BLOB)

(MESSAGEPART ma kompozytPRIMARY KEY("MESSAGEID", "PARTNO"))

Pożądane wyjście

Biorąc pod uwagę powyższe dane, powinienem otrzymać coś takiego:

MESSAGEID   COUNT(*)
-----------------------------------------------
1           2
2           0

Wydaje się oczywiste, że muszę wykonać lewe przyłączenieMESSAGE stół, ale jak zwrócić liczbę0 dla wierszy, z których połączone kolumnyMESSAGEPART sąNULL? Próbowałem:

Logika

próbowałem

SELECT m.MESSAGEID, COUNT(*) FROM MESSAGE m
LEFT JOIN MESSAGEPART mp ON mp.MESSAGEID = m.MESSAGEID
GROUP BY m.MESSAGEID;

Jednak to powraca

MESSAGEID   COUNT(*)
-----------------------------------------------
1           2
2           1

Próbowałem też

SELECT mp.MESSAGEID, COUNT(*) FROM MESSAGE m
LEFT JOIN MESSAGEPART mp ON mp.MESSAGEID = m.MESSAGEID
GROUP BY mp.MESSAGEID;

ale to wraca

MESSAGEID   COUNT(*)
-----------------------------------------------
1           2
            1

Co ja tu robię źle?

questionAnswers(2)

yourAnswerToTheQuestion