我创建了以下查询:
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。谢谢:))
答案 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