2014-12-02 4 views
0

В качестве примечания я искал вокруг совсем немного, но, похоже, не понял, как его исправить. Я все еще изучаю все в SQL Server, поэтому, пожалуйста, будьте терпеливы со мной.Многопользовательский идентификатор не может быть связанным исключением

Я хочу, чтобы получить желаемый результат в количестве от двух таблиц, но когда я начинаю добавить подзапрос в мое заявление я получаю эту ошибку:

The multi-part identifier "OD.Menu Name ID" could not be bound.

Это утверждение, что у меня есть.

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 

Может кто-нибудь просветить меня о том, почему я хотел бы получить «не может быть привязан» исключение. Также, если нужно, я могу включить соотношение таблиц.

Edit Вот отношения (я не мог загрузить изображение, но я надеюсь, что это будет делать)

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 

The (<) означают, где PK идет в.

+0

@bummi Если у него нет столбца, как бы я хотел добавить столбец? – YoHanYolo

ответ

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 

Выше запроса ограничивает столбцы и таблицы тем, что есть столбец с «Меню» где-то в названии.

+0

Проверка орфографии. Также я сделал вышеуказанный запрос, и если я понимаю, что вы хотите, чтобы я увидел, действительно ли Имена имени меню соответствует таблице Order Detail_T, к которой он относится. Итак, если у него есть столбец, что может быть проблемой? – YoHanYolo

+0

@YoHanYolo - что произойдет, если вы попробуете простой 'select top 5 OD. [Идентификатор имени файла] из [Order Detail_T] OD' – bf2020

+0

Он просто перечислит первые 5 лучших записей для Имена имени меню. – YoHanYolo

Смежные вопросы