繁体   English   中英

MySQL-对一个表中的记录进行计数,并对另一个表中的记录求和

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM