Re:短信订阅查询

时间:2013-08-16 13:19:33

标签: java

我在这里有一个独特的问题。我教自己如何编码,善待我。我有一个约会应用程序,从两个表中读取我,e。 Users表和SMS订阅表。

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

订阅表具有订户应从系统接收自动文本的次数。收到的文本基本上是异性的联系方式。

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

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

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");
/*     */     }
/*     */   }
/*     */ 

1 个答案:

答案 0 :(得分:0)

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

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

您还没有说过您正在使用哪种RDBMS,但查询与

类似
SELECT * from subscriptions where sex = (sex variable) and datelastsent < date_add (now(), interval - 6 hours) order by rand() limit 1