0

私はホッケー統計データベースを書いています。プレイヤーの合計ポイントを計算しようとしています。合計ポイントは、1st_assists、2nd_assists、goals_for テーブルの合計です。もともと、テーブルが完全に入力されていたときに、以下のコードが機能していました (つまり、すべてのプレーヤーに少なくとも 1 つの最初のアシストがありました)。今は 1 つのゲームしかないので、結果セットには goal_for 情報が含まれていません。これは、アシストを持っているプレーヤーがゴールを持っていないためです。
完全な外部結合機能が必要ですが、これは MySQL では使用できないことを読みました。また、左結合と右結合の結合を行うことで、完全な結合をエミュレートすることもできます。このクエリの複雑さを考えると、それを行う方法を理解することはできません。クエリは次のとおりです。

select p.player_first_name, p.player_last_name, count1, count2, (count1+ifnull(count2,0)) as total_count
from
(select player_id, count(*) count1
from(select * from 1st_assists
union
select * from 2nd_assists) as tem
join players on tem.fk_player_id=players.player_id
group by fk_player_id
order by count(*) desc) q1
left join
(select player_id, count(*) count2
from goals_for
join shots_for on goals_for.fk_shot_for_id=shots_for.shot_for_id
join players on shots_for.fk_player_id=players.player_id
group by player_id) q2
ON q1.player_id=q2.player_id
left join players p ON q1.player_id=p.player_id
order by (count1+count2) desc;

結果は次のとおりです。

player_first_name   player_last_name    count1  count2  total_count
Ray                 Bourque                 1   NULL    1
Dany                Heatley                 1   NULL    1
Mike                Bossy                   1   NULL    1

このゲームで得点した他の 3 人のプレーヤーがいますが、上記の結果には表示されません。必要な完全外部結合をエミュレートするにはどうすればよいですか? それが私が必要としているものですよね?

テーブルの詳細と目的の結果は次のとおりです。

1st_assists:
    1st_assist_id
    fk_goal_for_id
    fk_player_id

2nd_assists:
    2nd_assist_id
    fk_goal_for_id
    fk_player_id

goals_for:
    goal_for_id
    fk_shot_for_id
    game_winner
    time

shots_for:
    shot_for_id
    fk_game_id
    fk_player_id

players:
    player_id
    player_first_name
    player_last_name



desired query results
player_first_name   player_last_name    count1  count2  total_count
Ray                 Bourque                 1   NULL    1
Dany                Heatley                 1   NULL    1
Mike                Bossy                   1   NULL    1
Wayne               Gretzky              NULL      1    1
Paul                Coffey               NULL      1    1
Bobby               Orr                  NULL      1    1

私が本当に関心があるのは、1st_assists、2nd_assists、goals_for の合計である total_count 値だけです。このクエリは、最初のゲームのみに基づいています。多くのゲームがあるでしょう。

4

0 に答える 0