【问题标题】:Error : The "multi-part" identifier could not be bound [duplicate]错误:无法绑定“多部分”标识符[重复]
【发布时间】:2019-08-23 20:19:23
【问题描述】:

我正在尝试加入 2 个表并收到此错误。

关于架构:PK 是 a.app_guid、s.space_guid、o.org_guid。

无法绑定多部分标识符“apps.space_guid”

SELECT 
    a.app_guid,
    a.name,
    a.state,
    a.created_at,
    a.updated_at,
    deleted_at,
    a.space_guid,
    a.foundation,
    a.timestamp, 

    s.space_guid,
    s.name,
    s.created_at,
    s.updated_at,
    s.timestamp,
    s.foundation,
    s.org_guid, 

    o.org_guid,
    o.created_at,
    o.updated_at,
    o.name,
    o.timestamp,
    o.foundation
FROM 
    apps a, spaces s, organizations o
INNER JOIN 
    [spaces] ON [apps].[space_guid] = [spaces].[space_guid]
INNER JOIN 
    [organizations] ON [spaces].[org_guid] = [organizations].[org_guid]

预期的结果将包括一个表格,其中所有内容都根据space_guidorg_guid 组合在一起

【问题讨论】:

  • 如果为表定义别名,则必须使用它。例如用a.[space_guid]替换[apps].[space_guid]
  • 不要将旧的、已弃用的“FROM 中的逗号分隔表”样式与新的 正确 ANSI JOIN 样式混合 - 使用 new,正确的 ANSI 样式 - 并且不要将每个表连接两次......
  • 它不工作仍然是同样的错误
  • 这是您的实际代码吗?你真的交叉加入 3 个表,然后再加入 2 个表吗?你没有 WHERE 子句吗?
  • @forpas 我只需要将所有内容连接在一起我不需要 where 子句

标签: sql sql-server


【解决方案1】:

我认为您不想交叉连接和内连接表。
你只是弄乱了语法。
使用正确的连接语法:

SELECT 
    a.app_guid,
    a.name,
    a.state,
    a.created_at,
    a.updated_at,
    deleted_at,
    a.space_guid,
    a.foundation,
    a.timestamp, 

    s.space_guid,
    s.name,
    s.created_at,
    s.updated_at,
    s.timestamp,
    s.foundation,
    s.org_guid, 

    o.org_guid,
    o.created_at,
    o.updated_at,
    o.name,
    o.timestamp,
    o.foundation
FROM 
    apps a
INNER JOIN 
    spaces s ON a.space_guid = s.space_guid
INNER JOIN 
    organizations o ON s.org_guid = o.org_guid

【讨论】:

  • 明白了,谢谢 :)
猜你喜欢
  • 2020-06-16
  • 1970-01-01
  • 1970-01-01
  • 2018-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多