代码之家  ›  专栏  ›  技术社区  ›  Timothy Coetzee

SQL左联接返回空值

  •  0
  • Timothy Coetzee  · 技术社区  · 6 年前

    我有一个带表格的数据库 schedule 还有一张桌子 teams (如下图所示)我正在尝试使用 homeID awayID 内部 表上进行联接 团队 表…问题是它返回NULL

    数据库布局

    enter image description here

    Schedule 表格布局

    enter image description here

    团队

    enter image description here

    我的问题

    SELECT s.*,
      t1.teamId as homeId_teamId,
      t1.teamCode as homeId_teamCode,
      t1.teamName as homeId_teamName,
      t2.teamId as visitorId_teamId,
      t2.teamCode as visitorId_teamCode,
      t2.teamName as visitorId_teamName
    FROM schedule s
      LEFT JOIN teams t1 ON s.homeId = t1.teamName
      LEFT JOIN teams t2 ON s.visitorId = t2.teamName
    WHERE  gameID = '1';
    

    enter image description here

    你知道为什么我会得到一个空值吗?我错过了什么?谢谢你的帮助。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Gordon Linoff    6 年前

    id s应连接到 身份证件 s(非姓名):

    SELECT s.*,
          t1.teamId as homeId_teamId,
          t1.teamCode as homeId_teamCode,
          t1.teamName as homeId_teamName,
          t2.teamId as visitorId_teamId,
          t2.teamCode as visitorId_teamCode,
          t2.teamName as visitorId_teamName
    FROM schedule s LEFT JOIN
         teams t1
         ON s.homeId = t1.teamId LEFT JOIN
         teams t2
         ON s.visitorId = t2.teamId
    WHERE s.gameID = 1;
    

    gameID

    homeId visitorId 不匹配 teams.teamId ,但命名表明这是正确的条件。如果外键定义正确,那么类型就必须匹配。