试图在查询结果中匹配两次出现的情侣

时间:2015-01-29 15:37:58

标签: mysql

我正试图捕捉一个mysql的概念,例如我将为2on2篮子游戏采用数据库。表格是:

matches(**matchid**,teamAId,nationalityAOd,teamBId,nationalityBId)
teams(**teamId**,playerAname,playerBname)  
nationalities(**natId**,natName)

创建团队和国籍表以限制相同事件的冗余(USA USA USA ....) 有没有办法让查询结果成为游戏的完整数据,比如

1 jim jake USA tony joe ITA

2 carlos gabriel SPA dan chris ENG

...

按matchId分组?这个概念很简单,但我尝试的所有查询都不好,因为如果我说

WHERE teamAId=teamId AND teamBId=teamId

我显然什么都没得到,因为那里寻找的是与自己比赛的球队,但如果我说

WHERE teamAId=teamId OR teamBId=teamId

我每场比赛得到两条记录,每条记录只包含一个团队的数据,而这不是我想要的。为了这个愚蠢,我提前感谢谁会给我一个提示!干杯

1 个答案:

答案 0 :(得分:0)

您可以使用 INNER JOIN

SELECT t1.PlayerAName, t1.PlayerBName, n1.natName,
       t2.PlayerAName, t2.PlayerBName, n2.natName
FROM matches m
INNER JOIN teams t1 ON t1.teamID = m.teamAID
INNER JOIN teams t2 ON t2.teamID = m.teamBID
INNER JOIN nationalities n1 ON n1.natID = m.nationalityAID
INNER JOIN nationalities n2 ON n2.natID = m.nationalityBID
WHERE m.matchID = <match id here>

这应该允许您将多行中的数据放在同一行中,并按匹配ID进行过滤,因为它们是共同的。只需将匹配ID放在where子句中。