2016-08-02 61 views
0

您好我有一個像MySQL的替換與來自其他表名的ID查詢

matches 

match_id, home_team_id, away_team_id, home_team_player_1_id, home_team_player_2_id, .... 

一個表,我有表

teams 

team_id, team_name 


players 

player_id, player_name 

現在我試圖讓該查詢匹配表與實際名稱而不是id。

query_result 

match_id, home_team_name, away_team_name, home_team_player_1_name, ... 

是否有一種簡潔的方式來用表中的查找值替換ID? 要做到這一點,我可以想出的唯一方法是加入每個球隊的球隊表,然後爲每個球員加入球員名字表。有沒有比編寫50個連接更好的方法?

我不想改變實際的匹配表,只是在查詢中獲取名稱。

+0

加入是要走的路。 「有沒有更好的方法來做這件事,而不是寫50個連接?」你有沒有把所有的player_ids作爲匹配表中的列?這不好,你應該爲這個關係使用聯結表。 – Philipp

+0

謝謝菲利普。是的,所有player_ids都在比賽表中。讓我閱讀聯結表 - 不知道那是什麼 – chrise

回答

0

你需要連接表每個2次用不同的別名東西作爲

select 
m.match_id, 
t1.team_name as home_team_name, 
t2.team_name as away_team_name, 
p1.player_name as home_team_player_1_name 
p2.player_name as home_team_player_2_name 
from matches m 
left join teams t1 on t1.team_id = m.home_team_id 
left join teams t2 on t2.team_id = m.away_team_id 
left join players p1 on p1.player_id = m.home_team_player_1_id 
left join players p2 on p2.player_id = m.home_team_player_2_id