0
我在加入表格的过程中获得了一些很大的帮助,并试图将其提升到一个新的水平。下面的SQL来自帮助,但是我添加了以COUNT开头的选择行,到收件人表的内部联接和Group By。SQL外部加入一堆内部加入的结果
SELECT
Event.EventID AS EventID,
Event.EventDate AS EventDateUTC,
Participant2.ParticipantID AS AwayID,
Participant1.ParticipantID AS HostID,
COUNT(Recipient.ChallengeID) AS AllChallenges
FROM Event
INNER JOIN Matchup Matchup1
ON (Event.EventID = Matchup1.EventID)
INNER JOIN Matchup Matchup2
ON (Event.EventID = Matchup2.EventID)
INNER JOIN Participant Participant1
ON (Matchup1.Host = 1
AND Matchup1.ParticipantID = Participant1.ParticipantID)
INNER JOIN Participant Participant2
ON (Matchup2.Host != 1
AND Matchup2.ParticipantID = Participant2.ParticipantID)
INNER JOIN Recipient
ON (Event.EventID = Recipient.EventID)
WHERE Event.CategoryID = 1
AND Event.Resolved = 0
AND Event.Type = 1
GROUP BY Recipient.ChallengeID
ORDER BY EventDateUTC ASC
我的目标是获取收件人表中有多少行与事件中的EventID匹配的计数。此代码正常工作,除了,我也想得到结果,其中在Recipient中有0匹配的行。我想要15行(=事件的数量),但我得到2行,一个计数为1,一个计数为2(这适合于内部联接,因为示例收件人表中有3行,一个一个EventID和两个EventID)。
我认为无论是一个LEFT连接或一个OUTER连接是我正在寻找,但我知道我不太了解表如何实际加入。左边的加入让我多了一个0,这恰好是EventID 1(表中的第一件事),但仅此而已。错误建议我不能将INNER连接更改为OUTER。我尝试了一些加括号和一些子选项等,但似乎无法使其工作。
啊!因此,通过对其他字段进行分组,在无法匹配行的情况下,对吗?太好了,谢谢! – 2010-04-02 23:22:54