Обновление данных

Аечка
Дата: 19.12.2002 10:18:52
Дорогие программисты, помогите мне пожалуйста.
Не знаю как решить задачку, вроде не так уж и сложно, но как все это организовать не имею представления. Сказывается недостаток опыта и знаний.
В-общем, имеются 2 таблицы, которые надо проанализировать: пусть это будут р1 и р2. Соответственно столбцы такие у р1 - t1(char(9)),t2(numeric),t3..., у p2 - r1(char(9)),r2(numeric),r3(char(9)),...
Необходимо обновить данные в таблице р1 таким образом: выбираем в р2 все записи, где р1.t1=p2.r1, таких записей может быть несколько, далее в этой выборке вычисляем по некоторому правилу из p2.r2 некоторую переменную и присваиваем полученное значение в p1.t2. На словах все просто, а как это сделать?

С уважением, Аечка:)
Breakneck
Дата: 19.12.2002 10:31:14
Делается это такой конструкцией

update p1
set p1.t2 = p3.Var
from
(select p2.r2*100 as Var from p2 inner join p1 on (p1.t1 = p2.r1)) p3
Аечка
Дата: 19.12.2002 10:52:26
Breakneck, я наверно не так немного объяснила.
Мне необходимо проанализировать данные из выборки (то есть имеется куча условий по какому правилу действовать) прежде чем вставить полученное итоговое значение
doctor
Дата: 19.12.2002 10:59:45
так может делать выборку во временную таблицу, потом анализировать полученные значения и результат(ы) вставлять куда надо.
Аечка
Дата: 19.12.2002 11:07:24
Doctor, в том то и вся проблема, я не знаю как это делать.
Примерно это будет выглядеть так:
CREATE PROCEDURE ля-ля 

@t1 char(9),
@t2 numeric OUTPUT
SELECT * INTO #table1
--Анализируем #table1 и вычисляем @t2

GO

А вот как дальше вызывать и обновлять?
EXEC ля-ля....
LexusR
Дата: 19.12.2002 11:16:13
Так в
update p1
set p1.t2 = p3.Var
from
(select p2.r2*100 as Var from p2 inner join p1 on (p1.t1 = p2.r1)) p3
"p2.r2*100" и есть некое условное правило
вставляй вместо него требуемое и вперед
А если анализ выборки должен быть интерактивный
-тогда к терапевту
пардон к Doctor-у
doctor
Дата: 19.12.2002 11:20:37
А может в нутри проcедуры все сделать

CREATE PROCEDURE ля-ля
SELECT p2.* INTO #table1
from р2 inner join p1 on p1.t1 = p2.r1

--Анализируем #table1 и update p1

GO

По сути тоже самое что предложил Breakneck
Breakneck
Дата: 19.12.2002 13:30:27
Полностью согласен с LexusR.
Внутри select'a можете построить что угодно.