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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2016, 13:25   #1
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию sql запрос update поля типа integer

Имеется на складе товар, и у товара имеется порядковый номер 1-2-3-4-5, если товар под номером 3 продан, он из базы удаляется.
Подскажите пожалуйста запрос, каким образом написать запрос, что бы товары снова пронумеровались по порядку.
т.е. было {1-2-3-4-5}, товар под номером {3} удалили. БД стала выглядеть так: {1-2-4-5}. Какой запрос надо выполнить, что бы стало так: {1-2-3-4}...

SQL Server 2005
Janger вне форума Ответить с цитированием
Старый 08.08.2016, 13:50   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

это можно сделать запросом, проапдейтив записи в таблице.
Но возникает подозрение, что эти танцы с бубном вообще не нужны.

Вы ТОЧНО уверены, что Вам нужно это поле с номером в таблице?!
Без него никак не обойтись?


посмотрите, "Возвращение порядковых номеров строк в результирующем наборе"

FAQ.Нумерация записей в запросе [new]


_____

если же не передумаете делайть update, то посмотрите примеры на stackoverflow:

SQL Update with row_number()

Последний раз редактировалось Serge_Bliznykov; 08.08.2016 в 13:58.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.08.2016, 14:01   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Подозреваю, что это поле ключ записи да еще автоинкрементный. Не? А порядковый номер лучше на клиенте в вычисляемом поле формировать, зацепившись за RecNo
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.08.2016, 14:23   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Подозреваю, что это поле ключ записи да еще автоинкрементный.
если это так, то тогда трогать его НЕЛЬЗЯ!!!
я исходил из того, что в таблице есть уникальный ID и он никак с этим порядковым номером не связан.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.08.2016, 21:06   #5
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Подозреваю, что это поле ключ записи да еще автоинкрементный. Не?
Я тоже так думаю ... Но можно применять "Функция ROW_NUMBER "

Код:
create table Tab1(t_id int identity,
                  t_name nvarchar(35),
                  t_price money
                  )
                  
------------------------------
insert into Tab1(t_name, t_price)
output inserted.*
values(N'Чай', 10.50),
      (N'Сахар', 8.50),
      (N'Кофе', 12.50),
      (N'Пива', 5),
      (N'Хлеб', 2.20)
      
-----------------------------
delete from Tab1 output deleted.*
where t_name=N'Кофе'

------Вот у меня t_id №3 отсутствовать SELECT-е
select * from Tab1


--- Я помню что T-SQL есть "Функция ROW_NUMBER "
select ROW_NUMBER() over(order by t_name)as ID, t_name, t_price
from Tab1
order by 1 asc

Последний раз редактировалось xxbesoxx; 09.08.2016 в 21:11.
xxbesoxx вне форума Ответить с цитированием
Старый 09.08.2016, 21:37   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Все можно, некоторые пи вычисляют до нескольких триллионов знаков после запятой, на компе само собой, другие чудики на память знают десяток тысяч первых знаков после запятой этого же числа. А другие в задачах принудительно обновляют инкрементный ключ. Сама необходимость этого говорит о не правильном подходе к задаче. Но возможность этого есть
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TpFibDataset не возвращает поля типа integer woodywood БД в Delphi 2 30.08.2013 11:02
SQL запрос UPDATE averkiev Visual C++ 0 26.07.2012 16:26
SQL-запрос с вычислением поля lyle_200490 SQL, базы данных 3 03.04.2011 15:59
SQL-запрос с вычислением поля lyle_200490 БД в Delphi 1 03.04.2011 13:41
Перевод поля типа Character в тип Integer [Delphi] Pinkygirl Помощь студентам 2 22.10.2009 21:54