【问题标题】:SQL Server 2012 Multi part identifier could not be boundSQL Server 2012 多部分标识符无法绑定
【发布时间】:2015-12-07 02:20:57
【问题描述】:

我有 4 个表要加入 Adventureworks 2012。我不知道为什么会出现“无法绑定错误”。

消息 4104,第 16 级,状态 1,第 7 行

无法绑定多部分标识符“Production.ProductCategory.Name”。

消息 4104,第 16 级,状态 1,第 1 行

无法绑定多部分标识符“Production.ProductCategory.Name”。

SELECT
    COUNT(WorkOrderID) AS TotalWorkOrders, 
    [Production].[ProductCategory].[Name]
FROM [Production].[WorkOrder] WO
INNER JOIN [Production].[Product] P ON WO.[ProductID] = P.[ProductID]
INNER JOIN [Production].[ProductSubcategory] PS ON PS.[ProductSubcategoryID] = P.[ProductSubcategoryID]
INNER JOIN [Production].[ProductCategory] PC ON PC.[ProductCategoryID] = PS.[ProductCategoryID]
WHERE WO.[StartDate] >= '1999—03-08' AND WO.[StartDate] <= '2008-05-02'
GROUP BY [Production].[ProductCategory].[Name]

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    您的查询已为表 [Production].[ProductCategory] 提供别名 PC。您需要在查询的其余部分使用它:

    SELECT COUNT(WO.WorkOrderID) AS TotalWorkOrders, 
           PC.[Name]
    FROM [Production].[WorkOrder] WO
         INNER JOIN [Production].[Product] P ON WO.[ProductID] = P.[ProductID]
         INNER JOIN [Production].[ProductSubcategory] PS ON PS.[ProductSubcategoryID] = P.[ProductSubcategoryID]
         INNER JOIN [Production].[ProductCategory] PC ON PC.[ProductCategoryID] = PS.[ProductCategoryID]
    WHERE WO.[StartDate] >= '1999—03-08' AND WO.[StartDate] <= '2008-05-02'
    GROUP BY PC.[Name];
    

    一旦为表指定别名,您需要引用该别名而不是原始表名。

    【讨论】:

    • 我刚刚想通了,打算解决我的问题,非常感谢
    【解决方案2】:

    您应该在列列表中使用别名:

    SELECT
        COUNT(WorkOrderID) AS TotalWorkOrders, 
        PC.[Name]
    FROM [Production].[WorkOrder] WO
    INNER JOIN [Production].[Product] P ON WO.[ProductID] = P.[ProductID]
    INNER JOIN [Production].[ProductSubcategory] PS ON PS.[ProductSubcategoryID] = P.[ProductSubcategoryID]
    INNER JOIN [Production].[ProductCategory] PC ON PC.[ProductCategoryID] = PS.[ProductCategoryID]
    WHERE WO.[StartDate] >= '1999—03-08' AND WO.[StartDate] <= '2008-05-02'
    GROUP BY PC.[Name]
    

    【讨论】:

      【解决方案3】:

      当您在查询中以错误方式使用架构([Production])时,有时会发生此错误。

      例如,如果你写:

      select [Production].[ProductCategory].[Name]
      from [Production].[WorkOrder] WO
      

      你会得到错误。

      在这种情况下,将其更改为:

      select [ProductCategory].[Name]
      from [Production].[WorkOrder] WO
      

      【讨论】:

        【解决方案4】:

        请在 group byclause..bcoz 中写入 PC.[name],因为您已经为 table product.prooductcategory.c 指定了别名,因此必须在必要时使用别名 PC 来定义查询中产品类别表的所有列..

        【讨论】:

          猜你喜欢
          • 2022-11-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-16
          • 2013-06-23
          • 2019-01-26
          相关资源
          最近更新 更多