多部分标识符无法绑定例外

时间:2014-12-02 17:36:37

标签: sql-server sql-server-2014

作为一个说明我已经搜索了很多但似乎无法掌握如何解决它仍然。我还在学习SQL服务器的细节,所以请耐心等待。

我希望从两个表中获得所需的数量输出,但是当我开始将子查询添加到我的语句中时,我会收到此错误:

  

多部分标识符" OD.Menu名称ID"无法受约束。

这是我的陈述。

Select IT.[Item Name], SUM(OD.Quantity) * SI.Quantity as QTY from [Order Detail_T] as OD, 
dbo.SumOfIngredientsQty_V as SI
join [Ingredients Qty_T]
on [Ingredients Qty_T].[Menu Name ID] = OD.[Menu Name ID]
join Ingredients_T as It
on [Ingredients Qty_T].[Ingredients ID] = IT.[Ingredients ID]
where SI.Quantity in (Select SumOfIngredientsQty_V.Quantity as SI from SumOfIngredientsQty_V)
Group by IT.[Item Name]

我还创建了一个与上述陈述相关的视图:

create view SumOfIngredientsQty_V
as
Select [Item Name], Sum(Quantity) as Quantity from [Ingredients Qty_T]
join [Ingredients_T]
on [Ingredients Qty_T].[Ingredients ID] = Ingredients_T.[Ingredients ID]
group by [Item Name]
go

有人可以告诉我为什么我会得到"无法绑定"例外。如果需要,我也可以包括表格的关系。

编辑以下是关系(我无法上传图片,但我希望这样做)

Ingredients_T : (PK) Ingredients ID, Item Name
Ingredients Qty_T : (FK) Menu Name ID, (FK) Ingredients ID, Quantity
Menu Name_T : (PK) Menu Name ID, Price, Menu Name
Order Detail_T : (PK) Order Detail ID, (FK) Order ID, (FK) Menu Name ID, Quantity

Ingredients_T > Ingredients Qty_T < Menu Name_T > Order Detail_T 

(&lt;)表示PK进入的位置。

1 个答案:

答案 0 :(得分:0)

检查OD.[Menu Name ID]上的拼写确保您没有省略下划线或任何空格。

您可以使用以下查询输出列名,因为SQL Server已存储它们:

select c.name as colname, t.name as tablename
from sys.columns c
join sys.tables t on c.object_id = t.object_id
where c.name like '%Menu%'
order by tablename

以上查询将列和表限制为具有&#34;菜单&#34;的列。在名称的某个地方。