持久循环循环mySQL

时间:2015-01-27 15:10:37

标签: php mysql round-robin

我有一个大约10个销售代表的表格,每次都会发送一封包含潜在客户的新电子邮件,每次将新的潜在客户添加到数据库中。

---------------------------------------------
id  |  name  |  email               |  active
---------------------------------------------
1   |  bill  |  bill@billspills.com |    y
2   |  bob   |  bob@bobsjobs.com    |    n
3   |  sue   |  sue@suesshoes.com   |    y
4   |  betty |  jan@jansvans.com    |    y

我希望系统能够以循环方式向销售代表发送电子邮件。到达表的末尾后,它再次从头开始。我只想通过电子邮件发送给那些活跃的'标志设置为' y'。销售代表可以通过将标志设置为' n'来选择退出。所以,上面会发电子邮件:

bill,sue,jan,bill,sue,jan等。

我需要保持这种状态,因为潜在客户可能会在数分钟或数小时内出现,所以我需要一种方法来记住上次发送电子邮件的代表,以确定谁应该收到下一封电子邮件。

我考虑使用第五栏,“电子邮件最后”,然后查询最后通过电子邮件发送的人,并选择下一个ID。我不确定我是如何重新回到起点的,也许是通过计算记录来确定表格中的最后一个记录。

我问,只是为了看看我是否错过了一个更简单,更简洁的方法。我正在使用PHP。

更新

解决方案:(使用Laravel / Eloquent)

public function touch(){
        $rep = Rep::where('active','=','y')->orderby('updated_at', 'asc')->first();
        $rep->touch();
        echo $rep->name;
}

使用SQL等效:

select * from `reps` where `active` = 'y' order by `updated_at` asc limit 1 
update `reps` set `updated_at` = '2015-01-28 03:52:32' where `id` = '2' 

1 个答案:

答案 0 :(得分:3)

添加emailedLast列(时间戳),当您将潜在客户通过电子邮件发送给代表时,请将其设置为当前时间戳(now()

然后,您查询下一个电子邮件回复的查询将是:

select * from reps where active = 'y' order by date asc limit 1;