Помогите написать SQL запрос
1884
4
Срочно помогите!
не знаю как написать запрос на обновление таблицы
необходимо:
в таблице Т изменить поле С1 на значение С1-С2
где С2 поле из другой таблицы!
необходима связь между таблицами по ключу
--------------------------------------------
такого изврата я еще никогда не делал
помогите плиз очень надо!!!!
не знаю как написать запрос на обновление таблицы

необходимо:
в таблице Т изменить поле С1 на значение С1-С2
где С2 поле из другой таблицы!
необходима связь между таблицами по ключу
--------------------------------------------
такого изврата я еще никогда не делал
помогите плиз очень надо!!!!
Приведенной инфы слишком мало для конкреного ответа. Хоть укажи СУБД, они же используют разные диалекты SQL...
В общих чертах может вот это поможет (для SQL Server 2000):
UPDATE titles
SET ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
Или вот это:
UPDATE titles
SET ytd_sales =
(SELECT SUM(qty)
FROM sales
WHERE sales.title_id = titles.title_id
AND sales.ord_date IN (SELECT MAX(ord_date) FROM sales))
FROM titles, sales
В общих чертах может вот это поможет (для SQL Server 2000):
UPDATE titles
SET ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
Или вот это:
UPDATE titles
SET ytd_sales =
(SELECT SUM(qty)
FROM sales
WHERE sales.title_id = titles.title_id
AND sales.ord_date IN (SELECT MAX(ord_date) FROM sales))
FROM titles, sales
не вижу как это сделать в один запрос
я бы сделал так.
Tab1 : id1, C1
Tab2: id2, C2
select id1 id, C1,C2 from tab1, tab2
where id1=id2
Результат скидываем в таблицу tmp
update tab1
set C1=
(select c1-c2 from tmp where id=id1);
drop table tmp;
я бы сделал так.
Tab1 : id1, C1
Tab2: id2, C2
select id1 id, C1,C2 from tab1, tab2
where id1=id2
Результат скидываем в таблицу tmp
update tab1
set C1=
(select c1-c2 from tmp where id=id1);
drop table tmp;
Как я понял из ТЗ должно быть примерно так.
Tab1: id C1
Tab2: id C2 id_tab1
Update tab1
Set C1=C1-(Select C2 from Tab2 Where tab1.id=id_tab1)
Только обязательно нужно что бы каждому значению С1 соответствовало одно значение С2. А то ошибку выдаст.
Tab1: id C1
Tab2: id C2 id_tab1
Update tab1
Set C1=C1-(Select C2 from Tab2 Where tab1.id=id_tab1)
Только обязательно нужно что бы каждому значению С1 соответствовало одно значение С2. А то ошибку выдаст.
ТОП 5
2
4