gpt4 book ai didi

mysql - 尝试匹配查询结果中出现的两次配对

转载 作者:行者123 更新时间:2023-11-29 23:07:48 24 4
gpt4 key购买 nike

我正在尝试理解mysql的一个概念,例如我将使用一个数据库来进行2on2篮球比赛。这些表格是:

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

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

1 吉姆· jack 美国 托尼·乔 ITA

2 卡洛斯·加布里埃尔·SPA 和克里斯·ENG

……

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

WHERE teamAId=teamId AND teamBId=teamId

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

WHERE teamAId=teamId OR teamBId=teamId

我每场比赛都会得到两条记录,每条记录都只有一支球队的数据,这不是我想要的。很抱歉这个愚蠢的事情,我提前感谢任何给我提示的人!干杯

最佳答案

您可以使用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 进行过滤,因为它们是公共(public)的。只需将匹配 ID 放入 where 子句即可。

关于mysql - 尝试匹配查询结果中出现的两次配对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28218596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com