[英]MySQL - Count records in one table and sum records in another table
我知道这类似于以下问题: MySQL查询-对一个相关表求和-对另一个相关表进行计数,但是我无法使其工作。
我有3张桌子:
Event
Attendee
Gifts
对于每个Event
我们需要总结Attendees
的数量以及Gifts
的总额。 Attendee
可能会或不会收到礼物。
我可以使其正常工作,以便如果忽略礼物总数,则可以通过以下查询获得正确的答案:
SELECT event.name AS name, count( * ) AS num_attendee
FROM attendee
RIGHT JOIN event on event.id = attendee.event_id
WHERE event.company_id =6
GROUP BY event.id
但是我不知道如何对每个事件给所有Attendees
的礼物(即Gift.Amount
值)进行Gift.Amount
。 当我尝试根据event_id
简单地加入Gift
表时,所有数字都很古怪。
您是否正确进行了加入? 您应该在礼品表中同时包含活动和参与者:
from attendee right join
event
on event.id = attendee.event_id right join
gifts
on event.id = gifts.event_id and attendee.id = gifts.attendee_id
在MS-SQL 2000中是正常的:
SELECT event.name AS name, count( * ) num_attendee ,amount
FROM attendee
RIGHT JOIN event on event.id = attendee.event_id
LEFT OUTER JOIN(
SELECT event_id,amount=SUM(Amount)
FROM Gifts
GROUP BY event_id
) Gifts ON Gifts.event_id=event.id
WHERE event.company_id =6
GROUP BY event.name,amount
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.