gm35 мне трудно дать готовый ответ не видя и не зная базы, но с подобными вещами хорошо знаком.
Нам нужно сделать SELECT SUM(что-то) FROM и вот тут дальше пошли либо цеплять джойнами нужные таблицы либо в WHERE можно еще подзапросами делать.
В любом случае на мой взгляд подобную вещь (количество свободных мест на событие с учетом уже выкупленных билетов) надо делать именно на уровне MySQL, а не вытягивать кучу данных в запросе и потом на PHP их обрабатывать - вот именно это получается масло масляное.
Дадите дизайн ваших таблиц с комментариями по полям и что в итоге нужно получить - дам конкретный запрос на результат без проблем.
Но хотя костыли тоже вещь, если вопрос решен - это главное, красота кода уже потом. Ну а оптимизация скорости вообще редко важно экономить миллисекунды.