Я пытаюсь создать sql, который уведомит всех основателей гильдии "один из ваших членов может быть уже 30-го уровня сегодня, пожалуйста, сделайте квест" повышение ранга гильдии "на основе самого сильного члена гильдии и дат квестов членов (target_newbie_date, target_intermediate_date" и target_pro_date).
Если у игрока еще нет квестовых дат, он просто проверит, находится ли он на 30/50/100 лвл (это мой текущий уровень ниже)
Проблема:
Каждый участник должен достичь 30, 50, 100 уровней в определенную дату на основе его / ее квеста по желанию target_newbie_date, target_intermediate_date и target_pro_date сейчас, и мне нужно также проверить дату, если она не равна нулю, если она не равна нулю, уведомление получено ' появляются, пока дата не станет равной target_newbie_date.
так что моя модель изменится с
класс игрока
attr_accessor: name,: level
конец
к этому. Теперь у каждого игрока есть свой квест
класс игрока
принадлежит_гильдии
attr_accessor: name,: level,: target_newbie_date,: target_intermediate_date,: target_pro_date
конец
пока это sql для уведомления
SELECT guild.*
FROM
(SELECT `guild`.*, max(player.level) as current_guild_lvl
FROM `guild`
INNER JOIN `player` ON `player`.`guild_id` = `guild`.`id`
AND `guild`.`founder_player_id` = 79
AND `player`.`level` in (30,50,100)) as guild
WHERE ((
(guild_rank = 'newbies' and current_guild_lvl = 30) or
(guild_rank = 'intermediates' and current_guild_lvl = 50) or
(guild_rank = 'professionals' and current_guild_lvl = 100)) is false )
приветствуется любое улучшение производительности по моему запросу! хотя это не главный вопрос ^^,