我在这里有一个独特的问题。我教自己如何编码,善待我。我有一个约会应用程序,从两个表中读取我,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");
/* */ }
/* */ }
/* */
答案 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