首先让我说这应该是一个相对简单的问题,由于糟糕的数据库设计(不是我),我也不是 mysql 专家,因此变得不必要复杂。

考虑以下

表时间表

php - 连接表mysql - 没有双重迭代-LMLPHP

请注意 homeIDvisitorID 列如何包含团队名称而不是实际 teamID 的

为了解决这个问题,我创建了一个新表,其中包含 teamIDteamName 的列,如下图所示。

表队

php - 连接表mysql - 没有双重迭代-LMLPHP

我的问题

我必须从 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

php - 连接表mysql - 没有双重迭代-LMLPHP

注意上面的 teamID 是如何 只为 1 个团队 Limit 1 生成的

无限制语句(双迭代)

php - 连接表mysql - 没有双重迭代-LMLPHP

请注意上面如何为两个团队检索 teamID。 问题在于它进行了双重迭代。

TLDR;以上提出了以下问题

  • 首先,脚本将生成两个输出,一个用于主队,一次用于客队。然而正如预期的那样,我不能拥有它。
  • 作为问题 1 的解决方法——我添加了 Limit 1,但我在使用 Limit 时遇到的问题是它只返回一个 teamID(我猜是预料之中的)

    问题

    如何通过一次迭代从表团队中获得两个 teamID?希望这是有道理的......

    额外的

    带有硬编码团队名称的应用程序演示如下所示(只是为了了解他们想要实现的目标)

    php - 连接表mysql - 没有双重迭代-LMLPHP

    最佳答案

    听起来您想将 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/

  • 10-16 13:45