Помогите по синтаксису SQL-запроса

черный_монах
Дата: 21.02.2008 12:02:53
Приложение ADO.NET. СУБД - Access, Провайдер - OLEDB.

Пишу такую команду.


UPDATE Main SET Name=?, Company=?, Platoon=?, Skill=?,
PostID=(SELECT TOP 1 PostID FROM Posts WHERE Post=?),
RankID=(SELECT TOP 1 RankID FROM Ranks WHERE Rank=?) WHERE id=?

В Visual Studio выбрасывается исключение:
В операции должен использоваться обновляемый запрпос.

Что неправильно?
:-Q
Дата: 21.02.2008 12:15:48
dlookup() может спасти отца русской демократии.
черный_монах
Дата: 21.02.2008 13:06:41
А в строку SQL-запроса как это запихнуть?
sdfgsdfgsdf
Дата: 21.02.2008 13:07:46
Мммм да.... А DLookUP совсем не панацея... иногда даже лишний гемморой.
alexmsp
Дата: 21.02.2008 13:21:51
черный_монах

UPDATE Main SET Name=?, Company=?, Platoon=?, Skill=?,
PostID=(SELECT TOP 1 PostID FROM Posts WHERE Post=?),
RankID=(SELECT TOP 1 RankID FROM Ranks WHERE Rank=?) WHERE id=?
Что неправильно?

Jet поменять на MSDE. И будет правильно. Или то что уже советовали.
черный_монах
Дата: 21.02.2008 20:04:03
UPDATE Main SET PostID=Posts.PostID FROM Posts, Main WHERE Posts.Post=? AND Main.id=?

исключение
Ошибка синтаксиса (пропущен оператор) в выражении запроса 'Posts.PostID FROM Posts'.

Что нетак?
Karfaqen
Дата: 21.02.2008 20:33:14
Что нетак?
FROM в UPDATE не бывает
черный_монах
Дата: 21.02.2008 20:42:16
ПРимер из MSDN
UPDATE titles
SET ytd_sales = titles.ytd_sales + sales.qty
FROM titles, sales
WHERE titles.title_id = sales.title_id
AND sales.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
Karfaqen
Дата: 21.02.2008 21:06:28
А, то есть вы не про msJetSQL, тогда пардон - я думал вы хотите узнать именно про него.
Karfaqen
Дата: 21.02.2008 21:15:56
Вдогонку - для msJet можно в таком духе:
UPDATE titles INNER JOIN sales ON titles.title_id = sales.title_id 
SET titles.ytd_sales = titles.ytd_sales + sales.qty
WHERE sales.ord_date = (SELECT MAX(ord_date) FROM sales)