2014-11-24 202 views
0

问题:如何使MySQL查询子查询中结合2个结果1个结果

如何使这个查询结果合并为1分的结果?

select *, count(winner) as count 
    from (select case radiant_win 
       when 1 then radiant_name 
       else dire_name 
      end as winner, 
      radiant_team_id, 
      dire_team_id, 
      series_id, 
      series_type 
     from matches 
     where leagueid = 2096 and 
       start_time >= 1415938900 and 
      ((radiant_team_id= 1848158 and dire_team_id= 15) 
       or (radiant_team_id= 15 and dire_team_id= 1848158)) 
     ) as temp 
    group by winner; 

当前结果

下面是当前查询结果

Results from the query

预期的效果

下面是我想要的结果

Desired results

回答

1

似乎要汇总所有的比赛两队之间并指望有多少次,每次他们是胜利者,如果是这样:

要简化事情,创建一个视图:

create view v_matches as 
select radiant_team_id as team1_id, radiant_win as team1_win, dire_team_id as team2_id, 1 - radiant_win as team2_win, leagueid, start_time, series_id, series_type 
from matches 
union 
select dire_team_id as team1_id, 1 - radiant_win as team1_win, radiant_team_id as team2_id, radiant_win as team2_win, leagueid, start_time, series_id, series_type 
from matches 

然后:

select team1_id, sum(team1_win) as team1_wins, team2_id, sum(team2_win) as team2_wins, series_id, series_type 
from v_matches 
where leagueid = 2096 and start_time >= 1415938900 
    and team1_id = 1848158 and team2_id = 15 

您可以将团队名称添加到视图中或使用teams表格加入第二个查询。