我有三個表:如何在連接後列出不同的列並計數?
team(ID, name)
goal(ID, team_ID, goalType_ID, date)
goalType(ID, name)
正如你所看到的,是TEAM_ID球隊表的ID,並goalType_ID是goalType表的ID。
對於所有團隊,我想列出發生過的不同類型的目標數量,如果沒有,則應該出現0。
我們不需要關心目標表,因爲我們並不需要的目標,所以我已經得到了只使用了前兩個表的跟蹤代碼的類型名稱:
SELECT team.ID, team.name, goal.goaType_ID
FROM team LEFT JOIN goal ON team.ID=goal.team_ID
結果是我想要的三列信息表,但我想要計算DISTINCT goalTypes和GROUP BY team.ID或team.name的數量,並將它保留三列,並且如果結果是null,顯示0(團隊可能沒有打進任何目標)。
結果表看起來是這樣的:
team.ID team.name goalsType.ID
1 Team_1 1
2 Team_2 2
2 Team_2 2
2 Team_2 2
3 Team_3 4
4 Team_4 null
5 Team_5 null
6 Team_6 1
6 Team_6 2
6 Team_6 4
6 Team_6 3
7 Team_7 5
7 Team_7 4
8 Team_8 null
我已經試過GROUP BY,DISTINCT的組合,和COUNT,但仍無法得到的結果我想要的。
也許我正在談論這一切都是錯誤的?任何幫助將不勝感激,謝謝。
編輯: 基於戈登·利諾夫的答案,我試圖做:
SELECT DISTINCT team.name, COUNT(goal.goalType_ID)
FROM team LEFT JOIN goal ON team.ID=goal.team_ID
GROUP BY team.ID, team.name
,它會給我:
Name #0
Team_1 1
Team_2 3
Team_3 1
Team_4 0
Team_5 0
Team_6 4
Team_7 1
Team_8 0
如果我嘗試使用「DISTINCT team.ID,DISTINCT隊.name「,它會出錯。
對不起,暫時沒有工作。這也給了我非常模糊的錯誤:「該命令包含一個或多個錯誤。[,,,,,]」 – PGT 2014-10-19 22:35:11
@PGT。 。 。這似乎是一個奇怪的錯誤,只是對您的問題中的查詢進行了修改。 – 2014-10-19 22:39:24
這是一個打印出來的前端錯誤,我沒有看到服務器端錯誤的特權。無論發生什麼樣的錯誤,它都會顯示錯誤。我會通過修改您的答案來更新說明。 – PGT 2014-10-19 22:40:12