簡體   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