嘿大家好,我回来了,期待更多的光彩。我有两个表:复杂的MySQL查询通讯队列
- 通讯 - 每一行都包含“从”头一个“身份证”,“主题”,“体” &为电子邮件
- newsletter_queue - 每一行包含一个“身份证”,'电子邮件”地址,‘日期’添加到队列和‘newsletterid’
我的目标是建立一个MySQL查询,可以从拉x行量‘newsletter_queue’,然后他们按自己的‘newsletterid’,而使用GROUP_CONCAT(或其他任何工作)将所有电子邮件转换为字符分隔的字符串,我将使用PHP进行分析。我想让他们在一起的原因是因为我使用的邮件程序库(swiftmailer)接受一个包含批量电子邮件的数组。另外,如果可能的话,将两个表连接在一起会非常简单,从而避免了第二个查询。
这是我到目前为止有:
SELECT GROUP_CONCAT(email ORDER BY date ASC SEPARATOR '|'), newsletterid, date
FROM newsletter_queue
WHERE status='0'
GROUP BY newsletterid
LIMIT 125
我的问题是,LIMIT 125被应用到已经连接在一起行,使之无用,由于这样的事实,我试图限制数量一次发送的电子邮件总数,而不是唯一的时事通讯。如果任何人都能指引我走向正确的方向,我会非常感激。如果你写下这个例子,那也很棒。
有没有什么好的理由来连接SQL中的邮件?特别是因为无论如何都需要使用PHP后处理。从数据库中提取非结构化的字符串是次优的,恕我直言。 – Tomalak 2009-05-27 06:50:05
@Tomalak,好吧,它使我无需重复while()循环来将他们的电子邮件添加到数组中。现在它的设置方式,while()循环只为每个独特的时事通讯循环一次,我使用explode()将电子邮件转换为数组,并使用batchSend()函数一次发送它们,而不是比为每个电子邮件地址打开一个smtp连接。你会推荐另一种方法吗? – bloudermilk 2009-05-27 23:06:13