0

我有一个约会应用程序,它从两个表中读取,即用户表和 SMS 订阅表。

users 表包含有关订阅者的所有个人详细信息,即他们的性别、姓名、宗教、职业等。

虽然订阅表具有订阅者应从系统接收自动文本的频率。收到的短信基本都是异性的联系方式。

我的问题是,如何生成一个查询,在任何给定时间发送异性的随机联系方式。

下面的代码仅对用户发起的请求执行查询。虽然我更感兴趣的是还包含向我的用户发送随机异性文本的查询,尤其是当用户未能自己提交请求时。我该怎么办呢,亲切的问候!

public void ExecuteSubscriptions() {
/* 609 */     this.var_returnMessage = "";
/* 610 */     String text = "";
/* 611 */     SqlConn lConn = null;
/*     */     try
/*     */     {
/* 615 */       String queryTmp = "select abs(DATEDIFF(datelastsent, NOW())) as gapTime, phone, request, SubscriptionFrequency from  where abs(DATEDIFF(datelastsent, NOW())) > 0 ";
/* 616 */       lConn = new SqlConn(false, true);
/* 617 */       if ((lConn.sqlConnection != null) && (lConn.statement != null))
/*     */       {
/* 619 */         ResultSet rs = lConn.statement.executeQuery(queryTmp);
/*     */ 
/* 621 */         if (rs != null)
/*     */         {
/* 623 */           String value = "";
/*     */ 
/* 625 */           while (rs.next()) {
/* 626 */             value = rs.getString("SubscriptionFrequency").toUpperCase().substring(0, 2);
/* 627 */             String[] smsParts;
/*     */             smsParts = rs.getString("request").split("");
/* 628 */             this.var_sender = rs.getString("phone");
/* 629 */             int var_num = Integer.parseInt(value);
/* 630 */             if (Integer.parseInt(rs.getString("gapTime")) >= var_num) {
/* 631 */               if ((!GetResults(CreateRequestQuery(smsParts, RequestTypes.NEWRESULTSONLY))) && 
/* 632 */                 (!GetResults(CreateRequestQuery(smsParts, RequestTypes.MIXEDRESULTS)))) {
/* 633 */                 this.var_totalResultsForUser = 0;
/* 634 */                 this.var_returnMessage = "Dear Subscriber, at the moment there were no results matching your subscription criteria, try again later.";
/*     */               }
/*     */ 
/* 637 */               text = new StringBuilder().append("update subscriptions set datelastsent = NOW() where phone = '").append(rs.getString("phone")).append("' and request = '").append(rs.getString("request")).append("'").toString();
/*     */             }
/*     */ 
/*     */           }
/*     */ 
/*     */         }
/*     */ 
/* 645 */         if ((this.var_returnMessage != null) && 
/* 646 */           (EngineIgniter.SendMessage(this.var_sender, "KQ Solutions", this.var_returnMessage))) {
/* 647 */           this.var_dm.CreateEntity(text);
/*     */         }
/*     */       }
/*     */     }
/*     */     catch (Exception ex)
/*     */     {
/* 653 */       this.var_dm.LogError(ex.getMessage(), "GENERIC");
/*     */     }
/*     */   }
/*     */ 
4

1 回答 1

0

“随机”可能不是最好的方法。您可能希望随机选择一部分在 x 时间内没有生成文本消息的用户。

例如,选择一个 6 小时内没有文本的随机用户。

您还没有说您正在使用哪个 RDBMS,但查询看起来类似于

SELECT * from subscriptions where sex = (sex variable) and datelastsent < date_add (now(), interval - 6 hours) order by rand() limit 1 
于 2013-08-16T13:29:30.570 回答