Постарайтесь не порождать слишком много потоков, когда пользователь нажмет кнопку действий многократно. Отключите кнопку при первом щелчке, породите свое действие в фоновом потоке, и при выполнении включите кнопку снова. Это не может быть проблемой для коротких выполняющихся задач.
Использовать внешнее соединение:
select cities.city_name, count(properties.id_city)
from cities left join properties on cities.id_city = properties.id_city
group by 1
Я думаю, что следующее сделает это за вас, хотя я не тестировал это. Хитрость заключается в том, чтобы получить количество свойств в одной таблице, а затем присоединить эту таблицу к таблице городов, преобразовав значения NULL в 0 с помощью функции IFNULL .
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);
Запрос:
SELECT cities.*, COUNT(properties.id_city) as num
FROM cities
LEFT JOIN properties on cities.id_city=properties.id_city
GROUP BY cities.id_city
должен возвращать счетчик 0 там, где вы хотите, хотя я не уверен на 100%, что это работает в MySQL.