powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как пронумеровать выборку?
9 сообщений из 9, страница 1 из 1
Как пронумеровать выборку?
    #32033256
Костя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, как получить пронумерованный список записей из базы. Например, надо получить пронумерованный по порядку список наименований.
...
Рейтинг: 0 / 0
Как пронумеровать выборку?
    #32033259
Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно использовать псевдостолбец ROWNUM

select ROWNUM,...
from ...
...
Рейтинг: 0 / 0
Как пронумеровать выборку?
    #32033440
shurikt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Этот прикол не проходит если есть сортировка или группировка.
В этом счучае можно сделать select из select'а:
select rownum, a.*
from (select * ля-ля-ля) a

В Reports есть другой выход: создать элемент групповой обработки и поставить ему свойство "Функция"-"Счетчик".
...
Рейтинг: 0 / 0
Как пронумеровать выборку?
    #32033530
vskv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select rownum, a.* from (select ... from ... order by ...) a

Ага. С шибко вумным оптимизитором. Как же :) Если оптимизатор увидит такую конструкцию, то ещё не факт, что он не попытается её соптимизировать сделав из неё один простой селект. А дальше последствия прогнозируемы -- будут выбраны значения rownum для внутреннего селекта, которые присваиваются до сортировки...
...
Рейтинг: 0 / 0
Как пронумеровать выборку?
    #32033534
shurikt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В тонкостях обработки таких конструкций оптимизатором не копался, но на опрыте проверено, что выбирается верно (8.1.6), нока ни разу не стреляло и думаю вряд ли стрельнет. Такая конструкция у меня работает как на протых выборках, так и на агрегированых, джоин.
...
Рейтинг: 0 / 0
Как пронумеровать выборку?
    #32033892
vskv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, совсем забыл -- вложеному запросу нельзя указать нельзя указать, как сортировать выборку, а только внешнему. А полагаться на то, что сервер для того, чтобы сделать GROUP BY отсортирует данные, лучше не полагаться...
...
Рейтинг: 0 / 0
Как пронумеровать выборку?
    #32034776
shurikt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А могу я узнать, почему вложеному запросу нельзя указать order by, из какого источника взята такая информация? Я только что создал таблицу, залил туда беспорядочно немного данных, результат при выборке:
- select * from test - данные выдаются беспорядочно;
- select * from (select * from test order by a) - упорядочено;
--------------------------
- select rownum, test.* from test order by a - поле а упорядочено, а rownum не по-порядку;
- select rownum, t.* from (select * from test order by a) t - rownum и поле а упорядочены;
...
Рейтинг: 0 / 0
Как пронумеровать выборку?
    #32034811
none
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Смотрите план выполнения запроса, тогда все станет на свои места: когда нумеруються записи, а когда происходит сортировка выборки.
2) ORDER BY во вложенных запросах можно использовать в коммандном SQL. Но попробуйте в PL/SQL блоке объявить такой курсор - шиш чего получится. Выход - использовать открытие динамического курсора (EXECUTE IMMEDIATE и все такое).
3) В реляционной модели, когда структура базы/таблиц создаеться девелопером и заранее известна практически всегда можно обойтись без ORDER BY используя индексы. Естественно при денормализации и траты пространства (памяти и дисковой и оперативной). Зато однозначный выигрыш в производительности.
Другое дело, когда структура таблиц заранее неизвестна и создаеться юзером; и есть какие-то причины, по которым ее нельзя сгенерить в статический вид. (Вроде бы такие хреновины называються Мета-данные.) Или пользователь задает, что мол хочу сортировать и по этой колонке и по пятой и по десятой. Тогда без ORDERA не обойтись.
4) И вообще, лафа вархаузерам - выполняеться запрос 0,1 секунду или 5 или 25 - по фигу, юзер подождет. В конце концов у системы ограниченный круг юзеров. В он-лайне такие штуки не прокатывают.
...
Рейтинг: 0 / 0
Как пронумеровать выборку?
    #32038422
ldima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос: а на ... тебе это нужно ???

может ты зря заморачиваешься??? лично я даже не могу себе представить где можно применить нумерацию строк, может это всего навсего один из длиных и не правильных путей к достижению нужной цели???
скажи что ты хочешь замутить?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как пронумеровать выборку?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]