Join 性别计数联接查询
我有三张桌子Join 性别计数联接查询,join,count,Join,Count,我有三张桌子 Member - MemberID, gender, etc Venue - VenueID, City, VenueName, etc Event - EventID, EventDate, etc 试图显示一个查询,显示2012年1月期间格拉斯哥市每项赛事的男性和女性人数 到目前为止,我的成绩是 SELECT Venue.VenueName, Venue.City, Event.Eventdate, (select count(gender) from member wher
Member - MemberID, gender, etc
Venue - VenueID, City, VenueName, etc
Event - EventID, EventDate, etc
试图显示一个查询,显示2012年1月期间格拉斯哥市每项赛事的男性和女性人数
到目前为止,我的成绩是
SELECT Venue.VenueName, Venue.City, Event.Eventdate, (select count(gender) from member where gender = 'm') AS MaleTotal, (select count(gender) from member where gender = 'f') AS FemaleTotal
FROM Venue INNER JOIN Event ON Venue.VenueID = Event.FKvenueID
WHERE Venue.City='Glagow' and Month(eventdate)=1 and year(partydate) = 2011;
这将生成一个表,其中显示
VenueName-ABC Venue, XYZVenue;
City- Glasgow, Glasgow;
Partydate- 04/01/2012, 05/01/2012
MaleTotal-4,4
FemaleTotal-3,3
这是错误的,因为成员表中总共只有7个条目,每个条目只参加1个活动
如果您有任何建议,我们将不胜感激。假设会员和活动之间存在多对多关系,您可以尝试以下方法
SELECT Venue.VenueName,
Venue.City,
Event.Eventdate,
SUM (CASE gender WHEN 'm' THEN 1 ELSE 0 END) AS MaleTotal,
SUM (CASE gender WHEN 'f' THEN 1 ELSE 0 END) AS FemaleTotal
FROM Venue INNER JOIN
Event ON Venue.VenueID = Event.FKvenueID INNER JOIN
Event_Member ON Event_Member.EventID = Event.EventID INNER JOIN
Member ON Member.MemberID = Event_Member.MemberID
WHERE Venue.City='Glagow'
and Month(eventdate)=1
and year(partydate) = 2011
GROUP BY Venue.VenueName,
Venue.City,
Event.Eventdate
你似乎错过了活动和成员之间的联系。您需要在您的男性/女性结果子查询中考虑这一点。选择countgender from member where gender='m'和memberId in select memberId from members\u events where members\u events.eventID where member\u events是保存成员与其注册的事件之间关系的表。