|
|
|
Как добавить поле автоматической нумерации в Select или таблицу
|
|||
|---|---|---|---|
|
#18+
Подскажите кто-нидь. Можно ли как нибудь добавить поле в таблицу, вычисляемое поле, через функцию, либо просто поле в запрос Select-а , которое автоматически нумеровало бы полученный рекордсет в ВНЕ зависимости от Order By. Например Select ID,NAME...., [inumerator] from Table Order By NAME DESC Где [inumerator] может быть всем чем угодно, функцией, вычисляемым полем etc Лишь бы он вовращал номер записи в текущем запросе. Например получаем: [ID], [NAME] ,[inumerator] 10 , Петя , 1 15 , Вася , 2 5 , Анна , 3 .................. Причем нумерация должна не повторяться и быть сквозная. Типа 1-я строка,2-я. Вариант: select [t1].[name], 'number' = 1 + isnull((select count(*) from [colors] [t2] where [t2].[name] < [t1].[name]), 0)from [colors] [t1] order by [name] asc не подходит, так как он повторяет номера если поле Name дублируется. Вожно ли в принципе такое. А то я уже думаю что нет.Pls, кто чем ... может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2002, 16:43:05 |
|
||
|
Как добавить поле автоматической нумерации в Select или таблицу
|
|||
|---|---|---|---|
|
#18+
ИМХО я думаю так select Num = identity(int, 1, 1), <your_field>..... into #t1 from <your_table> select * from #t1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2002, 17:35:39 |
|
||
|
Как добавить поле автоматической нумерации в Select или таблицу
|
|||
|---|---|---|---|
|
#18+
select identity (int,1,1),name ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2002, 19:16:07 |
|
||
|
Как добавить поле автоматической нумерации в Select или таблицу
|
|||
|---|---|---|---|
|
#18+
Спасибо. Владимир я так сейчас и делаю. Хотелось бы избавиться от перелива данных во временную таблицы. Сейчас это самый большой тормоз у меня. kotik - так не катит по синтаксиу. IDENTITY (Function) Is used only in a SELECT statement with an INTO table clause to insert an identity column into a new table. Только если есть INTO : Код: plaintext А это тоже самое, что я сейчас делаю. Я ищу способ не переливать данные.ИМХО наверное такого не существует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 13:44:59 |
|
||
|
Как добавить поле автоматической нумерации в Select или таблицу
|
|||
|---|---|---|---|
|
#18+
все-таки нумерацию лучше включать на клиенте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 14:04:08 |
|
||
|
Как добавить поле автоматической нумерации в Select или таблицу
|
|||
|---|---|---|---|
|
#18+
Подобные вопросы подниаются еженедельно - см. ранее. ИМХО, #таблы с IDENTITY по времени не проигрывают др.способам, а текст упрощают значительно. И если заполнение темповой таблы идет слишком медленно - следует поискать в запросе - ну не должно очень сильно отличаться! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 14:18:22 |
|
||
|
Как добавить поле автоматической нумерации в Select или таблицу
|
|||
|---|---|---|---|
|
#18+
Я так и думал что если идешь в туалет по большому, то надо надуться, а иначе ничего не выйдет. av2000 - мне нужно это не для вывода на клиент а для ограничения набора для постраничного листания под ASP. Bzzzzz - идет медленно не потому что добавили поле IDENTITY, просто сама таблица большая, вернее запрос возвращает МНОГО-МНОГО записей, а мне нужно потом вытянуть какую-нидть 48 ю страницу на ASP. Тогда вопрос по другому поставим. Можно ли как то вернуть записи с 50 по 100 например средствами SQL ? Как в MySQL, например: Код: plaintext Что означает в MySQL возвратить 10 записей, начиная с 6. Есть только в MSSQL : Код: plaintext а мне нужен горизонтальный срез для постраничного ASP листания. Вот и приходится извратом заниматься и переливать во временные таблицы свой запрос ТОЛЬКО ЛИШЬ для перенумерации, а только потом извлекать нужный горизонтальный срез. Первичный IDENTITY ключ таблицы не подходит так как используется Order By, да и "дырки" он имеет в следствие удаления записей в таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 17:14:06 |
|
||
|
Как добавить поле автоматической нумерации в Select или таблицу
|
|||
|---|---|---|---|
|
#18+
а paging для рекордсета разве не для этого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 17:38:14 |
|
||
|
Как добавить поле автоматической нумерации в Select или таблицу
|
|||
|---|---|---|---|
|
#18+
Вот мои "исследования" Использование механизма листания в ADO для Recordset. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Как видно из примера в Recordset есть механизм листания довольно удобный. Но как всегда Microsoft его сделала через одно место. Все бы ничего, но такой вариант работает в ADO, ТОЛЬКО ЕСЛИ КУРСОР создается НА КЛИЕНТЕ: oRset.CursorLocation =adUseClient Отсюда вытекает, как только я делаю серверный курсор (кстати сказать, он является умолчаемым), то данный механизм листания не работает ‘ Листание не работает если курсор серверный oRset.CursorLocation = adUseServer Ты попробуй данный механизм на Select * from Table1 в которой ХОТЯ бы 100 тыс записей. Я пробовал - тормоз полный, так как весь рекордсет тащится на клиента (Web сервер в данном случае). Этот вариант сразу отпал. Причем финт с переливом во временную таблицу работает на порядок быстрее.Но тоже до определенного предела. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 17:48:04 |
|
||
|
Как добавить поле автоматической нумерации в Select или таблицу
|
|||
|---|---|---|---|
|
#18+
а зачем выполнять запрос, который возвращает ВСЕ записи? Я обычно даю пользователю определить начальные условия поиска, скажем показать накладные за какой-то месяц или какого-то клиента за все время, после этого вызываю соотв. ХП, которая редко возвращает > 1000 записей, а после уже на веб-сервере включаю деление на страницы и отображаю одну из них. все работает достаточно шустро ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 17:55:49 |
|
||
|
Как добавить поле автоматической нумерации в Select или таблицу
|
|||
|---|---|---|---|
|
#18+
FAQ посмотрите. http://www.sql.ru/faq/faq_topic.aspx?fid=105 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 17:59:25 |
|
||
|
Как добавить поле автоматической нумерации в Select или таблицу
|
|||
|---|---|---|---|
|
#18+
av2000 ты как всегда прав, но блин заманали заказчики. Это я понимаю что нужно ограничить набор как можно меньше, но заказчики хотят видеть все сразу не вводя никаких данных в фильтр. Требование, что бы и в туалет сходить и не надуться(sorry за повтор). Dwarf - спасибо. В принципе идея переливать не ВСЮ таблицу а только ID записей не плоха. Но опять идет перелив во временную таблицу пускай из 2 полей но все равно. В принципе я уже сам дошел до этого метода. Но искал еще более лучшие решения. Кажись нашел. VVG_ подсказал классную идею: ------ paste ------------ select ProductID from (Select top 10 ProductID, created from (Select top 20 ProductID, created from Products order by created desc ) as V1 order by created ) as V2 order by created desc itаlic -поля отвечают за сортировку, bold - за страницу. Только обязательно должны быть индексы по каждому из полей сортировки. В данном случае это (Created,ProductID). -------------------- Во это идея мне больше нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 18:23:56 |
|
||
|
Как добавить поле автоматической нумерации в Select или таблицу
|
|||
|---|---|---|---|
|
#18+
если хотят видеть как бы ВСЕ, то лучше сделай допустим SELECT TOP 5000 ... 100% ни у кого терпения не хватит пролистать ВСЕ страницы (скажем по 50 записей) и народ станет вводить параметры поиска ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 18:39:41 |
|
||
|
Как добавить поле автоматической нумерации в Select или таблицу
|
|||
|---|---|---|---|
|
#18+
У буржуев хватает как ни странно терпения, кроме того там недалекие юзера сидят. Это наш русский на 10 раз поймет что можно и фильтр заполнить, а у них при 90-100 килобайт в сек прокачки по Интернету не всегда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 18:44:52 |
|
||
|
Как добавить поле автоматической нумерации в Select или таблицу
|
|||
|---|---|---|---|
|
#18+
а если хитрый юзер перескочит сразу на последнюю страницу, то в конце нумерации страниц сделаем ссылочку "далее", которая передаст в качестве параметра последний отображенный id и дадим ему еще порцию: SELECT top 5000 ... WHERE id NOT IN (select top 5000...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 18:47:35 |
|
||
|
Как добавить поле автоматической нумерации в Select или таблицу
|
|||
|---|---|---|---|
|
#18+
прикол по теме (реально услышанный разговор на радиорынке): - у вас есть автомобильные радиосигнализации? - да, вот модель сигнализирует вам на расстоянии до 200 метров - а побольше? - есть модель до 1 км. - а еще больше, километров на 10? - есть и такая, но учтите: БЕЖАТЬ ПРИДЕТСЯ ВАМ... занавес ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 18:56:46 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32074828&tid=1818367]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 342ms |

| 0 / 0 |
