Erlang和Ejabberd中的典型SQL查询

Erlang和Ejabberd中的典型SQL查询,erlang,ejabberd,Erlang,Ejabberd,我需要一些关于用Erlang编写典型SQL查询的帮助。我只是想阻止基于此查询记录脱机消息 要将此查询置于此函数的开头 store_offline_msg(Host, {User, _Server}, Msgs, Len, MaxOfflineMsgs, odbc) -> Count = if MaxOfflineMsgs =/= infinity -> Len + count_offline_messages(User, Host);

我需要一些关于用Erlang编写典型SQL查询的帮助。我只是想阻止基于此查询记录脱机消息

要将此查询置于此函数的开头

store_offline_msg(Host, {User, _Server}, Msgs, Len, MaxOfflineMsgs, odbc) ->
    Count = if MaxOfflineMsgs =/= infinity ->
           Len + count_offline_messages(User, Host);
           true -> 0
        end,
    if Count > MaxOfflineMsgs -> discard_warn_sender(Msgs);
Mysql表

 ID  | user         |  touser          | starttime           | end
 586 | my_gmail.com | touser_gmail.com | 2014-10-29 14:03:16 |  60
我需要的查询是检查:

如果“用户”和“用户”在此表中有记录,且当前时间介于starttime和starttime+end之间(60秒)


请帮我,我很感激

以下是我如何实施它并解决我的问题。

 Check = case catch ejabberd_odbc:sql_query(
            LServer,
            ["select id from archive_disable_user"
             "  where ( ( user ='", To, "' "
             "  and tuser='",  From , "' ) "
             "  or ( user ='", From, "' "
             "  and tuser='",  To , "' ) )"
             "  and ( ( UNIX_TIMESTAMP(start) + end ) > UNIX_TIMESTAMP()); "]) of
           {selected, ["id"], Rs} -> 
               Rcheck = len(Rs),
               if 
                Rcheck == 0 ->
                  false;
                true->                  
                  true
                end;         
           _-> false
          end,       
   Check.

现在还不清楚您是在问(1)如何编写SQL查询,(2)如何从Erlang与MySQL对话,还是(3)如何使用SQL查询的结果来影响ejabberd。我只是想帮助您在Erlang中编写SQL查询,这应该是ejabberd的方式。我将简单地用SQL编写同一个查询,然后您可以在erlang中再次编写它(如果可以的话)。