私は非常に基本的なレベルのイベント管理と招待システムを構築しています。そのために、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 が返されます。
そのため、それ自体で乗算して結果を返しているようです。この選択クエリには何か問題があるはずです。このクエリを修正してくれる人はいますか?
前もって感謝します。