2014-01-07 70 views
1

select * from Teams;我想用不同的值显示相同的列两次mysql

| team_name | team_id | 
| India  |  1 | 
| England |  2 | 
| Germany |  3 | 
| Japan  |  4 | 

SELECT * FROM匹配;

| match_id | match_date | hometeam | awayteam | homescore | awayscore | 
|  1 | 2014-06-24 |  1 |  2 |   3 |   0 | 
|  2 | 2014-06-25 |  3 |  4 |   0 |   2 | 

匹配表hometeamawayteam是团队,表的外键team_id


我想选择显示与team_names

+5

澄清你的问题,这是不干净 –

+0

我想你需要更好地思考你的分贝。最好在球队表上有一个名为点的列,而不是总结它。 – Goikiu

+0

欢迎来到StackOverflow!这是一个让程序员在试图获得明确结果后卡住的地方,以及那些乐于帮助这些人的程序员。你有什么尝试?你对表连接有什么想法吗? – Rachcha

回答

3

沿homescoreawayscore你必须加入与此表相匹配的表格:

SELECT th.team_name as team_home, m.homescore, ta.team_name as team_away, m.awayscore 
FROM matches m 
INNER JOIN teams th ON m.hometeam = th.team_id 
INNER JOIN teams ta ON m.awayteam = ta.team_id 

这里是SqlFiddle

+0

谢谢...它的工作! – hotspur27

0

再一个,与整场比赛的数据在一个选择......

select 
    m.*, 
    home.team_name as hometeam_name, 
    away.team_name as awayteam_name 
from 
    matches m, 
    teams home, 
    teams away 
where 
    home.team_id = m.hometeam 
    and 
    away.team_id = m.awayteam 
; 

看到SQLFIDDLE

相关问题