持续循环 mySQL
Persistent round robin loop mySQL
我有一个 table 大约 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
我希望系统以循环方式向代表发送电子邮件。一旦到达 table 的末尾,它将再次从头开始。我只想给 'active' 标志设置为 'y' 的人发送电子邮件。代表可以通过将标志设置为 'n' 来选择退出。所以,以上将发送电子邮件:
bill, sue, jan, bill, sue, jan 等等
我需要它是持久的,因为潜在客户可能会在几分钟或几小时内出现,所以我需要一种方法来记住最后一封电子邮件代表,以确定谁应该收到下一封电子邮件。
我考虑使用第五列,'emailedLast',然后查询最后收到电子邮件的人,并选择下一个 ID。我不确定如何重新回到起点,也许是通过计算记录来确定 table 中的最后一条。
我在问,只是想看看是否有我错过的更简单、更清晰的方法。我为此使用 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'
添加一个 emailedLast
列(时间戳),当您通过电子邮件将潜在客户发送给销售代表时,将其设置为当前时间戳 (now()
)
那么您查找下一个电子邮件代表的查询将是:
select * from reps where active = 'y' order by date asc limit 1;
我有一个 table 大约 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
我希望系统以循环方式向代表发送电子邮件。一旦到达 table 的末尾,它将再次从头开始。我只想给 'active' 标志设置为 'y' 的人发送电子邮件。代表可以通过将标志设置为 'n' 来选择退出。所以,以上将发送电子邮件:
bill, sue, jan, bill, sue, jan 等等
我需要它是持久的,因为潜在客户可能会在几分钟或几小时内出现,所以我需要一种方法来记住最后一封电子邮件代表,以确定谁应该收到下一封电子邮件。
我考虑使用第五列,'emailedLast',然后查询最后收到电子邮件的人,并选择下一个 ID。我不确定如何重新回到起点,也许是通过计算记录来确定 table 中的最后一条。
我在问,只是想看看是否有我错过的更简单、更清晰的方法。我为此使用 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'
添加一个 emailedLast
列(时间戳),当您通过电子邮件将潜在客户发送给销售代表时,将其设置为当前时间戳 (now()
)
那么您查找下一个电子邮件代表的查询将是:
select * from reps where active = 'y' order by date asc limit 1;