我正在构建一个非常基本的事件管理和邀请系统。为此,我构建了 2 个表并使用查询列出所有事件,其邀请计数为 1。发送的邀请总数 2。接受的总数 3。拒绝的总数 4。等待的总数
下面是查询
SELECT
*,
count(im.event_id_fk) as total_invitations,
count(im2.event_id_fk) as total_accepted,
count(im3.event_id_fk) as total_rejected,
count(im4.event_id_fk) as total_waiting
FROM event_mst em
LEFT JOIN invitation_mst im
ON (em.event_id_pk = im.event_id_fk)
LEFT JOIN invitation_mst im2
ON (em.event_id_pk = im2.event_id_fk AND im2.status = 'Accept')
LEFT JOIN invitation_mst im3
ON (em.event_id_pk = im3.event_id_fk AND im3.status = 'Reject')
LEFT JOIN invitation_mst im4
ON (em.event_id_pk = im4.event_id_fk AND im4.status = 'Waiting')
GROUP BY
im.event_id_fk,
im2.event_id_fk,
im3.event_id_fk,
im4.event_id_fk
ORDER BY
em.date_added DESC
现在的问题是这个查询给出了错误的计数,例如,如果总共发送了 3 个邀请,则给出 9 个。如果发送了 5 个邀请,则给出 25 个。
所以它似乎在与自身相乘并返回结果。我知道这个选择查询一定有问题。有人纠正我这个查询吗?
提前致谢。