无法绑定多部分标识符xxx(内部联接)

时间:2015-12-01 21:54:49

标签: sql sql-server select inner-join

我创建了以下查询:

SELECT vw.PackID AS NewData
FROM
(
    SELECT mt.PackID
    FROM EntityTable entities 
    INNER JOIN
    (
        SELECT TOP 1 * FROM MasterTable mt
        WHERE [Id] IN 
        (
            SELECT TOP 1 [chartID] FROM ChartTable
            Where [Code] IN
            (
                SELECT TOP 1 [Account] FROM ItemsTable it
                Where [EntityID] IN
                (
                    Select Distinct EntityID From EntityTable Where EntityID=@EntityID
                )
            )
        )
    ) mtbvw
    ON mt.Id = mtbvw.Id
) vw

我是一名C#开发人员并且几乎没有触及SQL,所以可能有更好的方法来实现这一点(使用内部联接?)但是我收到以下错误:

  

无法绑定多部分标识符“mt.Id”。

     

无法绑定多部分标识符“mcoa.1”。

任何人都可以帮我解决这些错误的原因吗? 谢谢! :)

关于这是做什么的一点信息:

  

EntityID正在传递到存储过程中。然后根据传入的EntityID从ItemsTable中获取帐户。然后将对象传递给ChartTable,后者返回第一个ChartID(所有ChartID对于该帐户都是相同的,因此取得最高的一个并不重要)并且同样通过此ChartID回到MasterTable并获取主ID。谢谢:))

1 个答案:

答案 0 :(得分:1)

这是基于提供的查询的猜测。

Select Distinct et.EntityID 
From EntityTable et
join ItemsTable it on it.EntityID = et.EntityID
join ChartTable ct on ct.Code = it.Account
join MasterTable mt on mt.Id = ct.charID
Where et.EntityID = @EntityID