Ik denk dat het volgende het voor je zal doen, hoewel ik het niet heb getest. De truc is om het aantal eigenschappen in één tabel te krijgen, en dan links die tabel bij de tabel met steden te voegen, waarbij NULL's worden omgezet in 0s met behulp van de IFNULL functie.
SELECT city_name, IFNULL(property_count, 0)
FROM cities
LEFT JOIN
(SELECT id_city, count(*) as property_count
FROM properties
GROUP BY id_city) city_properties
USING (id_city);