2

我有两张桌子

TEAMS - team_id 和 team_name(除其他外)
SCHEDULE - game_id、team_a、team_b、team_a_id、team_a_id(除其他外)

我正在尝试创建一个结果,其中我找出team_name(或team_id)出现在任一列team_ateam_bteam_a_idteam_b_id)中的次数

TEAMS
team_id team_name
1001 纽约
1011 克利夫兰
1021 底特律
1031 休斯顿

时间表
game_id team_a team_b team_a_id team_b_id
1 纽约克利夫兰 1001 1011
2 纽约底特律 1001 1021
3 克利夫兰休斯顿 1011 1031

答案:纽约 2 克利夫兰 2 底特律 1 休斯顿 1

4

4 回答 4

2

单程

Select t.team_name,Sum(allteams.teamcount) as NumberOfTimes
From teams t
inner join(
select team_a_id as team_ID, 1 as teamcount From Schedule
Union 
Select team_b_id, 1 From Schedule
) allteams
on allteams.Team_ID = t.Team_ID
Group By t.team_name
于 2013-05-09T15:36:18.610 回答
1

也许

SELECT count(*)
FROM teams
WHERE $teamID IN (team_a, team_b)
于 2013-05-09T15:27:14.837 回答
0

除非我遗漏了什么,否则似乎很简单。只需选择一个计数,然后使用WHERE OR 子句

SELECT COUNT(*)
FROM schedule
WHERE team_a = 'Team Name'
OR team_b = 'Team Name'

或者:

WHERE team_a_id = 'Team ID'
OR team_b_id = 'Team ID'
于 2013-05-09T15:32:58.667 回答
0

尝试这样的事情:

select count(*)
from teams t
join schedule s on (s.team_a = t.team_name OR s.team_b = t.team_name)
于 2013-05-09T15:38:54.117 回答