Как можно сделать автонумеруемое поле?
От: Alexander Rudenko  
Дата: 02.10.01 13:40
Оценка:
Как можно сделать автонумеруемое поле в SELECT. Т.е должно получится:
nomer Name
-----------
1 Alex
2 Ser
3 Andrew
И поле 'nomer' должно формироваться в запросе
Заранее благодарен?
ICQ: 15782989
Re: Как можно сделать автонумеруемое поле?
От: IT Россия linq2db.com
Дата: 03.10.01 01:22
Оценка:
Здравствуйте Alexander Rudenko, вы писали:

Любые, уважающие себя СУБД, должны иметь тип поля — автоикремент.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Как можно сделать автонумеруемое поле?
От: Ростислав Глухов Россия http://www.geocities.com/rg2204/
Дата: 03.10.01 05:05
Оценка:
Здравствуйте IT, вы писали:

IT>Любые, уважающие себя СУБД, должны иметь тип поля — автоикремент.


Человек наверное хочет нумеровать строки, выдаваемые селектом

у меня была похожая задача (сумма нарастающим итогом)
Выход для нумерации:
— временная таблица с доп. автоинкременным полем
— хранимая процедура с проходом по всем записям
— нумерация на клиенте

мне больше нравится первое
- А Вы что курите?
— Минздрав предупреждает
Re[3]: Как можно сделать автонумеруемое поле?
От: Lexey Россия  
Дата: 03.10.01 07:18
Оценка:
Здравствуйте Ростислав Глухов, вы писали:

РГ>Здравствуйте IT, вы писали:


IT>>Любые, уважающие себя СУБД, должны иметь тип поля — автоикремент.


РГ>Человек наверное хочет нумеровать строки, выдаваемые селектом


РГ>у меня была похожая задача (сумма нарастающим итогом)

РГ>Выход для нумерации:
РГ>- временная таблица с доп. автоинкременным полем
РГ>- хранимая процедура с проходом по всем записям
РГ>- нумерация на клиенте

РГ>мне больше нравится первое


Угу, а в MS SQL 2k есть еще предпочтительный вариант #0.
select identity(int),* from ...
Re[4]: Как можно сделать автонумеруемое поле?
От: Alexander Rudenko  
Дата: 03.10.01 19:18
Оценка:
Здравствуйте Lexey, вы писали:


L>Угу, а в MS SQL 2k есть еще предпочтительный вариант #0.

L>select identity(int),* from ...
Нужно попробовать, но, мне кажется, что такое будет работать в виде:
select identity(int),* INTO #tmp from ...
Т.е. создается временная таблица.

Наверное, мне надо немного переформулировать вопрос.
Мне нужно именно нумерование строк именно в представлении. Это мне нужно для отбора записейпо страницам. Я понимаю, что подобная тема очень часто обсуждалась в конференции. Но для меня необходимо немного другой подход.

Раньше я использовал такой подход:
во временную таблицу, с полем IDENTITY запихивал записи, ограничивая их при помощи
SET ROWCOUNT n
Но при использованиии Multi-statement функции данноое ограничение накладывается и на количество заносимых записей в возвращаемую функцией таблицу. А это немного неприемлимо.
А запихивать все записи во временную таблицу немного напряженное занятие. Вот поэтому хотелось бы как-нибудь сразу ограничить это дело.
ICQ: 15782989
Re[5]: Как можно сделать автонумеруемое поле?
От: Lexey Россия  
Дата: 04.10.01 07:13
Оценка:
Здравствуйте Alexander Rudenko, вы писали:

AR>Здравствуйте Lexey, вы писали:



L>>Угу, а в MS SQL 2k есть еще предпочтительный вариант #0.

L>>select identity(int),* from ...
AR>Нужно попробовать, но, мне кажется, что такое будет работать в виде:
AR>select identity(int),* INTO #tmp from ...
AR>Т.е. создается временная таблица.

Нет, это будет работать в любом случае. Identity — это функция в SQL 2k.

AR>Наверное, мне надо немного переформулировать вопрос.

AR>Мне нужно именно нумерование строк именно в представлении. Это мне нужно для отбора записейпо страницам. Я понимаю, что подобная тема очень часто обсуждалась в конференции. Но для меня необходимо немного другой подход.

AR>Раньше я использовал такой подход:

AR>во временную таблицу, с полем IDENTITY запихивал записи, ограничивая их при помощи
AR>SET ROWCOUNT n
AR>Но при использованиии Multi-statement функции данноое ограничение накладывается и на количество заносимых записей в возвращаемую функцией таблицу. А это немного неприемлимо.
AR>А запихивать все записи во временную таблицу немного напряженное занятие. Вот поэтому хотелось бы как-нибудь сразу ограничить это дело.

А кто мешает перед финальным селктом выполнить:
set rowcount 0?
Или почему не использовать TOP N в селекте, запихиваемом во временную таблицу?
Re: Как можно сделать автонумеруемое поле?
От: PeterG  
Дата: 04.10.01 12:44
Оценка:
Здравствуйте Alexander Rudenko, вы писали:

L>>Угу, а в MS SQL 2k есть еще предпочтительный вариант #0.

L>>select identity(int),* from ...
AR>Нужно попробовать, но, мне кажется, что такое будет работать в виде:
AR>select identity(int),* INTO #tmp from ...
AR>Т.е. создается временная таблица.

>Нет, это будет работать в любом случае. Identity — это функция в SQL 2k.


2 Lexey
Проверяйте работоспособность кода перед тем, как ее (работоспособность) заявлять. Это не работает в MSSQL любой версии.
Server: Msg 177, Level 15, State 1, Line 4
The IDENTITY function can only be used when the SELECT statement has an INTO clause.
Re[2]: Как можно сделать автонумеруемое поле?
От: Alexander Rudenko  
Дата: 04.10.01 15:45
Оценка:
Здравствуйте PeterG, вы писали:

PG>Здравствуйте Alexander Rudenko, вы писали:


L>>>Угу, а в MS SQL 2k есть еще предпочтительный вариант #0.

L>>>select identity(int),* from ...
AR>>Нужно попробовать, но, мне кажется, что такое будет работать в виде:
AR>>select identity(int),* INTO #tmp from ...
AR>>Т.е. создается временная таблица.

>>Нет, это будет работать в любом случае. Identity — это функция в SQL 2k.


PG>2 Lexey

PG>Проверяйте работоспособность кода перед тем, как ее (работоспособность) заявлять. Это не работает в MSSQL любой версии.
PG>Server: Msg 177, Level 15, State 1, Line 4
PG>The IDENTITY function can only be used when the SELECT statement has an INTO clause.

Вот-вот. И я о том же.
Если бы сделать такую UDF, которая бы просто нумеровала записи. Уж тогда то ее можно сравнить.
Хотя мне кажется, что это не реально.
ICQ: 15782989
Re[2]: Как можно сделать автонумеруемое поле?
От: WindJammer  
Дата: 04.10.01 16:43
Оценка:
L>>>Угу, а в MS SQL 2k есть еще предпочтительный вариант #0.
L>>>select identity(int),* from ...
AR>>Нужно попробовать, но, мне кажется, что такое будет работать в виде:
AR>>select identity(int),* INTO #tmp from ...
AR>>Т.е. создается временная таблица.

>>Нет, это будет работать в любом случае. Identity — это функция в SQL 2k.


И в MS SQL 7 identity(int) работать будет, но именно так, как сказал PeterG

PG>2 Lexey

PG>Проверяйте работоспособность кода перед тем, как ее (работоспособность) заявлять. Это не работает в MSSQL любой версии.
PG>Server: Msg 177, Level 15, State 1, Line 4
PG>The IDENTITY function can only be used when the SELECT statement has an INTO clause.
Re[2]: Как можно сделать автонумеруемое поле?
От: Lexey Россия  
Дата: 08.10.01 08:59
Оценка:
Здравствуйте PeterG, Вы писали:

PG>Здравствуйте Alexander Rudenko, вы писали:


L>>>Угу, а в MS SQL 2k есть еще предпочтительный вариант #0.

L>>>select identity(int),* from ...
AR>>Нужно попробовать, но, мне кажется, что такое будет работать в виде:
AR>>select identity(int),* INTO #tmp from ...
AR>>Т.е. создается временная таблица.

>>Нет, это будет работать в любом случае. Identity — это функция в SQL 2k.


PG>2 Lexey

PG>Проверяйте работоспособность кода перед тем, как ее (работоспособность) заявлять. Это не работает в MSSQL любой версии.
PG>Server: Msg 177, Level 15, State 1, Line 4
PG>The IDENTITY function can only be used when the SELECT statement has an INTO clause.

Мда, совсем башка плохой стал. :( Это называется почитал документацию, да невнимательно.
Re: Как можно сделать автонумеруемое поле?
От: Аноним  
Дата: 02.11.01 12:19
Оценка:
A baza-to kakaya?

V Sybase, MSSQL est' tip polya — autoincrement. A v Oracle eto delaetsya cherez Sequence.
Re[6]: Как можно сделать автонумеруемое поле?
От: Merle Австрия http://rsdn.ru
Дата: 02.11.01 13:17
Оценка:
Здравствуйте Lexey, Вы писали:


AR>>Нужно попробовать, но, мне кажется, что такое будет работать в виде:

AR>>select identity(int),* INTO #tmp from ...
AR>>Т.е. создается временная таблица.

L>Нет, это будет работать в любом случае. Identity — это функция в SQL 2k.

В любом случае работать не будет, а только с INTO.

IDENTITY (Function)
Is used only in a SELECT statement with an INTO table clause to insert an identity column into a new table.
Читайте доки — они рулез (с) FIDO.
Мы уже победили, просто это еще не так заметно...
Re[7]: Как можно сделать автонумеруемое поле?
От: Lexey Россия  
Дата: 02.11.01 16:18
Оценка:
Здравствуйте Merle, Вы писали:

M>Здравствуйте Lexey, Вы писали:



AR>>>Нужно попробовать, но, мне кажется, что такое будет работать в виде:

AR>>>select identity(int),* INTO #tmp from ...
AR>>>Т.е. создается временная таблица.

L>>Нет, это будет работать в любом случае. Identity — это функция в SQL 2k.

M>В любом случае работать не будет, а только с INTO.

M>IDENTITY (Function)

M>Is used only in a SELECT statement with an INTO table clause to insert an identity column into a new table.
M>Читайте доки — они рулез (с) FIDO.


Блин, ну сколько можно. Я уже давно признал свою ошибку и посыпал голову пеплом.
Re[8]: Как можно сделать автонумеруемое поле?
От: Merle Австрия http://rsdn.ru
Дата: 05.11.01 08:35
Оценка:
Здравствуйте Lexey, Вы писали:

L>Блин, ну сколько можно. Я уже давно признал свою ошибку и посыпал голову пеплом.

Извини, я просто поторопился.. Увидел пост и поспешил ответить... ;((
Мы уже победили, просто это еще не так заметно...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.