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