很难说出来。让我解释。我有一些表:团队,游戏和team_games。 Team_games有一个“站立”字段,默认为0。如果站立大于0,则游戏结束并且已经报告了分数。 我正在尝试提出一个将需要两个团队ID的查询,并计算他们在常设大于零时的共同游戏数量。
这是表格。到目前为止,除了我想要的东西之外,我已经完成了所有工作。
Teams
---------------------
team_id team_name
---------------------
1 Test
2 Test 2
Games
---------------------
game_id start_time
---------------------
1 (unix)
2 -
3 -
Team Games
---------------------------------
game_id team_id standing
---------------------------------
1 1 1
1 2 2
2 1 2
2 2 1
3 1 1
3 2 2
所以,我想再次捕获team_id为1或2的行,并且游戏ID相同,然后计算唯一的游戏ID。
因此,如果我正在寻找在第一队和第二队之间完成的比赛数量,最终结果将是:
-----
COUNT
-----
3
答案 0 :(得分:1)
SELECT COUNT(*) totalgames
FROM
(
SELECT Game_ID
FROM TeamGames
WHERE team_ID IN (1, 2) -- specify the teams here
GROUP BY Game_ID
HAVING COUNT(*) = 2 -- number of teams specified
AND SUM(standing = 0) = 0
) s
输出
╔════════════╗
║ TOTALGAMES ║
╠════════════╣
║ 3 ║
╚════════════╝
答案 1 :(得分:0)
我不确定但这可行
select count(distinct game_id) as games_number from Team_Games where (team_id = 1 or team_id = 2) and standing >= 1;
答案 2 :(得分:0)
如果需要,您可以从select子句中删除团队,也可以分组。
SELECT T1.TEAM_ID, T2.TEAM_ID, COUNT(*)
FROM
TEAM_GAMES T1, TEAM_GAMES T2
WHERE T2.TEAM_ID <> T1.TEAM_ID
AND T2.GAME_ID = T2.GAME_ID
AND T1.STANDING > 0 AND T2.STANDING > 0
GROUP BY T1.TEAM_ID, T2.TEAM_ID