Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.07.2012, 16:49   #1
lot555
Пользователь
 
Регистрация: 01.03.2010
Сообщений: 10
По умолчанию Поменять местами значения полей

Есть некторая таблица:
Код:
id || status || pos
---  --------  ----
15 || 	1	 ||  1
---  --------  ----
16 || 	2	 ||  2
---  --------  ----
17 || 	2	 ||  3
---  --------  ----
18 || 	2	 ||  4
---  --------  ----
Нужно поменять pos местами по следующим данным:
Код:
id = 16
pos = 4
Должны поменяться местами значения pos и таблица станет такой:
Код:
id || status || pos
---  --------  ----
15 || 	1	 ||  1
---  --------  ----
16 || 	2	 ||  4
---  --------  ----
17 || 	2	 ||  3
---  --------  ----
18 || 	2	 ||  2
---  --------  ----
Но при этом местами меняется только у одинаковых status, если дать следующие значения:
Код:
id = 15
pos = 3
Изменений никаких быть не должно! Так как со status = 1 нету pos = 3

Как происходит у меня сейчас...
Код:
SELECT * FROM `table_name` WHERE id = 16
SELECT * FROM `table_name` WHERE status = 2 AND pos = 4
UPDATE `table_name` SET pos = CASE WHEN id = 16 THEN '4' WHEN id = 18 THEN '2' END WHERE id IN (16, 18)
Можно сделать как то 2-умя или 1 запросом это все?
lot555 вне форума Ответить с цитированием
Старый 01.08.2012, 14:56   #2
lot555
Пользователь
 
Регистрация: 01.03.2010
Сообщений: 10
По умолчанию

Проблема решена

Сделал немного по другому, вместо передачи status и pos передаю только id

Одним запросом получилось следующее
Код:
UPDATE `table_name` AS c1 JOIN `table_name` c2 ON (c1.id = 16 AND c2.id = 18) SET c1.pos = c2.pos, c2.pos = c1.pos)
lot555 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поменять местами диапазоны bize Microsoft Office Excel 8 09.02.2012 21:18
в массиве поменять местами христик Помощь студентам 1 06.12.2011 09:20
При удалении записей значения полей с type:=Autoincrement (т.е+) в оставшихся полей не изменяются kenta БД в Delphi 2 29.10.2009 08:28
поменять местами научите Паскаль, Turbo Pascal, PascalABC.NET 13 08.01.2009 13:43
ПОменять значения местами qip2005 Паскаль, Turbo Pascal, PascalABC.NET 6 24.12.2008 23:38