Не могу сцепить два запроса....

shurman
Дата: 09.10.2003 18:34:48
SELECT [theme],count(*) AS cnt FROM deleted GROUP BY [theme]
UPDATE events SET [count]=[count]-cnt WHERE [id]=[theme]
Ru
Дата: 09.10.2003 19:44:36
Что-нибудь в таком роде:

UPDATE e
SET e.[count]=e.[count]-t.cnt
FROM events e JOIN (SELECT [theme],count(*) AS cnt FROM deleted GROUP BY [theme]) t ON e.[id]=t.[theme]
shurman
Дата: 23.12.2003 20:59:02
Вот спустя долгое время что-то добрался до старых триггеров. Опробывал описанный выше триггер, но оказалось, что он не работает. После ряда экспериментов получилось работающее следующее:
UPDATE events

SET [count]=[count]-t.cnt
FROM events e JOIN (SELECT [theme],count(*) AS cnt FROM deleted GROUP BY [theme]) t ON e.[id]=t.[theme]


И почему же всё-таки не работает запись:
UPDATE e

SET e.[count]=e.[count]-t.cnt
FROM events e


Интересно........
Алексей2003
Дата: 23.12.2003 21:09:41
а такое?
UPDATE events

SET events.[count]=events.[count]-t.cnt
FROM (SELECT [theme],count(*) AS cnt FROM deleted GROUP BY [theme]) t where events.[id]=t.[theme]



UPDATE e

SET e.[count]=e.[count]-t.cnt
FROM events e

откуда ж ему брать таблицу t???


для спящего время бодрствования равносильно сну
Aleksey777
Дата: 24.12.2003 06:58:43
вот отсюда
(SELECT [theme],count(*) AS cnt FROM deleted GROUP BY [theme]) t
tpg
Дата: 24.12.2003 07:27:01
автор
После ряда экспериментов получилось работающее следующее:
UPDATE events...

И почему же всё-таки не работает запись:
UPDATE e...

Если имеется в виду почему не работает с использованием алиаса таблицы, то... открываем BOL и смотрим синтаксис команды UPDATE:

UPDATE
{
table_name WITH ( < table_hint_limited > [ ...n ] )
| view_name
| rowset_function_limited
}
который, ИМХО, явно указывает на то, что алиас в этом месте применять нельзя. Да и все примеры в этой статье это косвенно подтверждают. Так, там же приведен следующий пример
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)