无法绑定多部分标识符

时间:2012-03-19 14:25:10

标签: sql sql-server sql-server-2005

SELECT * FROM Products_Joined, Products 
WHERE p.ProductManufacturer = 'Sony' 
ORDER BY p.ProductCode

我一直收到错误多部件标识符p.ProductManufacturer无法绑定

我试过了:

  • 设置Order By
  • PRODUCTS表添加到FROM

我有什么遗失的吗?

2 个答案:

答案 0 :(得分:3)

您应该使用:

SELECT p.*, pj.*
FROM dbo.Products p
INNER JOIN dbo.ProductsJoined pj ON ..... <== add your missing JOIN condition here
WHERE p.ProductManufacturer = 'Sony' 
ORDER BY p.ProductCode

首先:永远不要在生产代码中使用SELECT *

其次:使用正确的ANSI JOIN语法INNER JOIN..)清楚地显示您要加入的内容,以及什么加入条件(缺少哪个在你的情况下 - 你在这里生产笛卡尔产品.....)

第三:如果你使用像p.这样的表别名 - 你也需要定义它们!

答案 1 :(得分:1)

你没有p对象。您需要为其中一个表添加别名。

SELECT * FROM Products_Joined, Products AS p
WHERE p.ProductManufacturer = 'Sony' 
ORDER BY p.ProductCode

这将解决您的问题,但是您的桌子上应该有JOIN,否则您正在执行CROSS JOIN,这通常不是首选。它的外观如下所示。

SELECT * 
FROM Products_Joined
    JOIN Products AS p
        ON Products_Joined.ProductsID = p.ProductsID 
--This join is a guess on what the common column is between these two tables
--Change as necessary
WHERE p.ProductManufacturer = 'Sony' 
ORDER BY p.ProductCode

根据您的评论进行更新

如果您甚至使用Products.ProductManufacturer收到错误,那么您可能缺少Products表中的ProductManufacturer列。我会检查您的架构并验证列是否存在。