通知公会主人根据最强玩家/成员的等级来更新公会等级,并且成员对任务日期进行排名

时间:2019-04-12 06:58:20

标签: mysql ruby-on-rails

我正在尝试创建一个通知所有公会创建者的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 )

也欢迎对我的查询进行任何性能改进!尽管这不是主要问题^^,

0 个答案:

没有答案