I am trying to create a table for a game that shows some player and team stats so I can compare them. The two tables look like this:
year player team patch game result kills assists deaths
2018 Impact Team Liquid 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440062?gameHash=a3b08c115923f00d 1 3 6 0
2018 Hauntzer Team SoloMid 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440062?gameHash=a3b08c115923f00d 0 0 0 3
2018 Ssumday 100 Thieves 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440076?gameHash=c426d3d50426edb3 1 1 5 3
2018 zig OpTic Gaming 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440076?gameHash=c426d3d50426edb3 0 1 4 3
2018 Lourlo Golden Guardians 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440084?gameHash=f0f86e52b6e472e9 0 1 1 1
2018 Huni Echo Fox 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440095?gameHash=fd3b9331ff5312e3 1 4 6 0
2018 Flame FlyQuest 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440095?gameHash=fd3b9331ff5312e3 0 0 1 2
2018 ZionSpartan Counter Logic Gaming 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440106?gameHash=d6441d4ec8f87534 0 2 4 3
2018 Licorice Cloud9 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440106?gameHash=d6441d4ec8f87534 1 2 5 3
The thing to note here is that each player has a team, and there are two rows for each distinct game id (since there is one player on each team for each game).
The other table I have is for each team and their aggregate results, so in the above table, the kills/assists/deaths belong to the individual player, while below is the aggregate of the 5 players on each team.
year team player patch game result teamkills assists teamdeaths
2018 Team Liquid 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440062?gameHash=a3b08c115923f00d 1 11 36 1
2018 Team SoloMid 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440062?gameHash=a3b08c115923f00d 0 1 2 11
2018 100 Thieves 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440076?gameHash=c426d3d50426edb3 1 9 27 7
2018 OpTic Gaming 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440076?gameHash=c426d3d50426edb3 0 7 17 9
2018 Golden Guardians 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440084?gameHash=f0f86e52b6e472e9 0 2 7 7
2018 Echo Fox 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440095?gameHash=fd3b9331ff5312e3 1 15 40 2
2018 FlyQuest 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440095?gameHash=fd3b9331ff5312e3 0 2 7 15
2018 Counter Logic Gaming 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440106?gameHash=d6441d4ec8f87534 0 8 19 12
2018 Cloud9 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440106?gameHash=d6441d4ec8f87534 1 12 34 8
2018 OpTic Gaming 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440127?gameHash=361bcc2e848641d2 0 6 15 13
2018 Team Liquid 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440127?gameHash=361bcc2e848641d2 1 13 45 6
2018 FlyQuest 8.01 https://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440132?gameHash=23453515b5a50136 1 14 42 9
2018 Team SoloMid 8.01 https://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440132?gameHash=23453515b5a50136 0 9 23 14
I’m trying to join these columns so I can get a percentage for each player in each game. The problem is that when I try to join on the games column, it creates 4 rows. Player A on team A, Player A on team B, player B on team B, and Player B on team A.
The syntax I’m using is this:
create table toplaner_kill_participation
select
tl.player as TopLane_player,
tl.kills as TopLaner_kills,
tl.assists as TopLaner_assists,
tl.deaths as TopLaner_deaths,
t.*
from
LCS_top_teams_kda t
join LCS_top_top_kda tl
on tl.games = t.games
order by t.patch;
The output:
TopLane_Player TopLaner_kills TopLAner_assists TopLaner_deaths year team player patch games result teamkills assists teamdeaths
Impact 3 6 0 2018 Team Liquid 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440062?gameHash=a3b08c115923f00d 1 11 36 1
Impact 3 6 0 2018 Team SoloMid 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440062?gameHash=a3b08c115923f00d 0 1 2 11
Hauntzer 0 0 3 2018 Team Liquid 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440062?gameHash=a3b08c115923f00d 1 11 36 1
Hauntzer 0 0 3 2018 Team SoloMid 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440062?gameHash=a3b08c115923f00d 0 1 2 11
Ssumday 1 5 3 2018 100 Thieves 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440076?gameHash=c426d3d50426edb3 1 9 27 7
Ssumday 1 5 3 2018 OpTic Gaming 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440076?gameHash=c426d3d50426edb3 0 7 17 9
zig 1 4 3 2018 100 Thieves 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440076?gameHash=c426d3d50426edb3 1 9 27 7
zig 1 4 3 2018 OpTic Gaming 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440076?gameHash=c426d3d50426edb3 0 7 17 9
Lourlo 1 1 1 2018 Golden Guardians 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440084?gameHash=f0f86e52b6e472e9 0 2 7 7
Huni 4 6 0 2018 Echo Fox 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440095?gameHash=fd3b9331ff5312e3 1 15 40 2
Huni 4 6 0 2018 FlyQuest 8.01 http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002440095?gameHash=fd3b9331ff5312e3 0 2 7 15
What you can see here in the first 4 rows is what I described above. I understand that this is a result of the way the join works, but I’m just not sure how to prevent it from doing that. There isn’t really a primary key or other unique single column value I can use to join the tables.
I can create a table that shows each player and what team they were on for each patch using select distinct, and I’m wondering if I can do a second join on that table which would eliminate the erroneous entries, but I figure if there was a way to do that in the first join then that would be more efficient and therefore good to know.
Thanks.
Advertisement
Answer
No special need for primary/foreign keys here. There is missing second condition in the join.
select
tl.player as TopLane_player,
tl.kills as TopLaner_kills,
tl.assists as TopLaner_assists,
tl.deaths as TopLaner_deaths,
t.*
from
LCS_top_teams_kda t
join LCS_top_top_kda tl on tl.game = t.game and tl.team = t.team
order by t.patch;