Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Мудренный INSERT  [new]
Guset
Guest
Добрый день!
Подскажите как реализовать такое, нужно в корзину добавить опции к тем товарам которые уже выбрал пользователь. Пытался сделать вот таким запросом, но выдает ошибку Msg 209, Level 16, State 1, Line 5
Ambiguous column name 'Id'.

INSERT INTO CartDetails
                      (Cartid, MaterialId, RCount)
SELECT     1, Id, 3
FROM         Materials, CartDetails
WHERE     Materials.RType = CartDetails.MaterialId AND Materials.Options=1

1 и 3 это вместо параметров для упрощения запроса.
26 май 09, 22:01    [7231513]     Ответить | Цитировать Сообщить модератору
 Re: Мудренный INSERT  [new]
iljy
Guest
Guset
Добрый день!
Подскажите как реализовать такое, нужно в корзину добавить опции к тем товарам которые уже выбрал пользователь. Пытался сделать вот таким запросом, но выдает ошибку Msg 209, Level 16, State 1, Line 5
Ambiguous column name 'Id'.

INSERT INTO CartDetails
                      (Cartid, MaterialId, RCount)
SELECT     1, Id, 3
FROM         Materials, CartDetails
WHERE     Materials.RType = CartDetails.MaterialId AND Materials.Options=1

1 и 3 это вместо параметров для упрощения запроса.


а вы читали в BOL описание этой ошибки? Или хотя бы перевели ее? "Неоднозначное имя колонки ID." Тупо означает, что в данной области видимости сущесвует 2 колонки с таким именем, видимо в обеих таблицах она есть, потому что больше негде. Укажите конкретную таблицу, из которой хотите выбрать это значение.
26 май 09, 22:13    [7231537]     Ответить | Цитировать Сообщить модератору
 Re: Мудренный INSERT  [new]
Guset
Guest
Да чета я вчера совсем ерунду написал. В общем получился у меня такой запрос

INSERT INTO CartDetails
                      (Cartid, MaterialId, Count)
SELECT     1, Materials.Id, 3
FROM         Materials
WHERE      Materials.Options=1 AND Materials.Type IN 
(SELECT Materials.Type 
FROM Materials 
WHERE Materials.Options = 1 AND Materials.Type IN
(SELECT     Materials.Type
FROM         Materials INNER JOIN
                      CartDetails ON Materials.Id = CartDetails.MaterialId
WHERE     (CartDetails.Cartid = 1)))

Подскажите возможно ли вместо 3 подставить вычисляемое выражение, нужно умножить поле Materials.Formula на CartDetails.Count, т.е. кол-во опций зависит от числа заказанных товаров, если возможно то как? или это возможно сделать только отдельным запросом?

Заранее огромное спасибо!
27 май 09, 09:04    [7232127]     Ответить | Цитировать Сообщить модератору
 Re: Мудренный INSERT  [new]
Glory
Member

Откуда:
Сообщений: 104760
Guset


Подскажите возможно ли вместо 3 подставить вычисляемое выражение, нужно умножить поле Materials.Formula на CartDetails.Count, т.е. кол-во опций зависит от числа заказанных товаров, если возможно то как? или это возможно сделать только отдельным запросом?

Что вас останавливает от попытки попробовать "вместо 3 подставить вычисляемое выражение, нужно умножить поле Materials.Formula на CartDetails.Count" ?
27 май 09, 10:25    [7232565]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить