我正在尝试创建一个通知所有公会创建者的sql,“您的一个成员今天可能已经是lvl 30,请执行公会排名任务”基于最强的公会成员和成员的任务日期(target_newbie_date,target_intermediate_date和target_pro_date)。
如果玩家还没有任务日期,它只会检查他是否是30/50/100级(这是我目前的以下sql)
问题: 每个成员都必须根据他/她的任务可选的target_newbie_date,target_intermediate_date和target_pro_date在特定日期达到30、50、100级,我还需要检查日期是否不为null,如果不为null,则通知将不会生效。在日期不等于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 )
也欢迎对我的查询进行任何性能改进!尽管这不是主要问题^^,