Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Перенос цен


Автор: MrDmitry 8.7.2011, 14:41
Здравствуйте помогите перенести цены из одной таблицы в другую

Структура таблиц одинакова

id
user_id
summ

структура второй таблицы

id
user_id
summ


Нужно перенести только summ

id и user_id одинаковы в обоих таблицах

Автор: Zloxa 8.7.2011, 14:54
Код

update table2 set summ = (select summ from table1 where table1.id =table2.id )

Автор: Данкинг 8.7.2011, 14:58
Ну, как-то так в общем случае:
Код

update table2 set table2.summ=table1.summ where table1.id=table2.id

Автор: Zloxa 8.7.2011, 15:00
Данкинг,  from забыл. И это частный случай. )))  Оракля джойнить делит не умеет   smile 

Автор: MrDmitry 8.7.2011, 15:32
Код

update departament_sum set departament_sum.summ = departament_brand_stat.summ where departament_brand_stat.id = departament_sum.id


так не выходит база mysql

Автор: Zloxa 8.7.2011, 15:34
Цитата(MrDmitry @  8.7.2011,  15:32 Найти цитируемый пост)
так не выходит 

Код

update t1 set t1.summ = t2.summ from departament_sum t1, departament_brand_stat t2 where t1.id = t2.id


Автор: MrDmitry 11.7.2011, 14:52
Извиняюсь что задаю вопрос в этой теме а не создаю новую но вопросы схожи )

Теперь нужно увеличить цену у определенных юзеров


Таблица юзеров(user )

id name phone date login pass email type

таблица цен(departament_sum)

id user_id summ

ЗАпрос


Код

UPDATE b set b.summ = b.summ + 200 FROM  user u, departament_sum b WHERE b.user_id = u.id and u.type=4


mysql ругается (

Автор: password 11.7.2011, 16:54
Код

UPDATE departament_sum b set b.summ = b.summ + 200 where b.user_id in (select u.id FROM  user u WHERE u.type=4)

Автор: MrDmitry 11.7.2011, 17:16
Цитата(password @ 11.7.2011,  16:54)
Код

UPDATE departament_sum b set b.summ = b.summ + 200 where b.user_id in (select u.id FROM  user u WHERE u.type=4)

спасибо. Такой запрос работает. Но просто интересно а можно ли сделать такое без вложенного запроса? Вить такой запрос будет существенно дольше обрабатываться.  Хотя в данном случаи скорость обработки и выполнения не критична. Но на будущее хотелось бы узнать )

Автор: password 11.7.2011, 17:53
Без вложенного запроса пусть тебе еще спецы напишут, можно или нельзя )))
Я бы сделал так.
Увеличить скорость выполнения можно через функцию EXISTS
Код

UPDATE departament_sum b set b.summ = b.summ + 200 where exists (select null FROM  user u WHERE b.user_id=u.id and u.type=4)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)