0

我知道这类似于这个问题:MySQL Query - Sum one related table - Count another related table但我无法让它为我工作。

我有 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

但我不知道如何总结每个事件Gift.Amount给所有人的礼物(即价值) 。Attendees当我尝试Gift根据event_id所有数字简单地加入表格时,就会变得古怪。

4

2 回答 2

0

您是否正确地进行连接?您应该在礼物表中同时包含活动和参与者:

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
于 2013-02-22T00:19:44.577 回答
0

这在 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
于 2013-02-22T00:40:15.003 回答