首先让我说这应该是一个相对简单的问题,由于糟糕的数据库设计(不是我),我也不是 mysql 专家,因此变得不必要复杂。
考虑以下
表时间表
请注意 homeID
和 visitorID
列如何包含团队名称而不是实际 teamID 的
为了解决这个问题,我创建了一个新表,其中包含 teamID
和 teamName
的列,如下图所示。
表队
我的问题
我必须从 table Teams
获取主队和客队的 teamID
所以我创建了 Teams
表和这个简单的脚本:SELECT schedule.*, teams.*FROM scheduleJOIN teams ON schedule.homeID = teams.teamName OR schedule.visitorID = teams.teamNameWHERE schedule.gameID = 411LIMIT 1 #added Limit1 else the code generates to rows
mysql 脚本的输出
限制 1
注意上面的 teamID 是如何 只为 1 个团队 和 Limit 1
生成的
无限制语句(双迭代)
请注意上面如何为两个团队检索 teamID。 问题在于它进行了双重迭代。
TLDR;以上提出了以下问题
Limit 1
,但我在使用 Limit
时遇到的问题是它只返回一个 teamID
(我猜是预料之中的)问题
如何通过一次迭代从表团队中获得两个 teamID?希望这是有道理的......
额外的
带有硬编码团队名称的应用程序演示如下所示(只是为了了解他们想要实现的目标)
最佳答案
听起来您想将 teams
两次加入 schedule
。
SELECT s.*,
th.*,
ta.*
FROM schedule s
INNER JOIN teams th
ON s.homeid = th.teamname
INNER JOIN teams ta
ON s.visitorid = ta.teamname
WHERE s.gameid = 411;
关于php - 连接表mysql - 没有双重迭代,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51007425/