我试图在'apst_mailings'上存储我们发送给订阅者的每封新闻稿的内容。每次我们尝试将电子邮件发送给个人时,我们都会在apst_mailings_accuses中插入一行报告发送时间和状态以及新信函的ID。我想列出新闻简报并计算发送的总数并成功发送。2在同一张桌子上的左外连接冻结服务器
SELECT m.id AS code_mailing,
COUNT(a.adh_code) AS num, COUNT(b.adh_code) AS succes
FROM apst_mailings AS m
LEFT OUTER JOIN apst_mailings_accuses AS a
ON a.id_mailing = m.id
LEFT OUTER JOIN apst_mailings_accuses AS b
ON b.id_mailing = m.id
AND b.etat = 'succes'
GROUP BY m.id
而且它只是永远挂起服务器。我曾试图分开查询每个连接,它的工作没有问题:
// Counts the email sent per mailing
SELECT m.id AS code_mailing,
COUNT(a.adh_code) AS num
FROM apst_mailings AS m
LEFT OUTER JOIN apst_mailings_accuses AS a
ON a.id_mailing = m.id
GROUP BY m.id
SELECT m.id AS code_mailing,
COUNT(b.adh_code) AS succes
FROM apst_mailings AS m
LEFT OUTER JOIN apst_mailings_accuses AS b
ON b.id_mailing = m.id
AND b.etat = 'succes'
GROUP BY m.id
我可能分裂我的查询,但为什么它不工作的原因,我受不了。任何人都可以解释吗?
谢谢!
你想用查询来实现什么?为什么加入一张桌子两次? – 2012-04-19 21:11:11
刚刚更新了我的问题。 – Nabab 2012-04-19 21:19:07