Страница 1 из 1
сквозная нумерация
Добавлено: 13 июн 2006, 10:01
Pol777
Привет всем!
Подскажите как в запросе сделать сквозную нумерацию строк (наподобие rowid в oracle)?
Добавлено: 13 июн 2006, 10:22
Ivan_Pisarevsky
на sql.ru это дело обсасывалось мильён раз, посмотри там, лениво снова разжевывать.
Добавлено: 13 июн 2006, 10:25
kdv
нумеровать на клиенте. порядок записей на выходе запроса зависит только от ORDER BY, и ни от чего другого.
Добавлено: 13 июн 2006, 10:51
Pol777
kdv писал(а):нумеровать на клиенте. порядок записей на выходе запроса зависит только от ORDER BY, и ни от чего другого.
Вы говорите об УПОРЯДОЧИВАНИИ данных, а я бы хотел прикрутить сквозную нумерацию.
Это чтобы у каждой записи был свой порядковый номер (1,2,3,4,5 и т.д.)
Добавлено: 13 июн 2006, 10:56
Ivan_Pisarevsky
Это про первичный ключ энд генератор такой витееватый вопрос?
Добавлено: 13 июн 2006, 11:02
Pol777
Ivan_Pisarevsky писал(а):Это про первичный ключ энд генератор такой витееватый вопрос?
Это уж как Вам угодно.
Задача тривиальная - пронумеровать записи. Только сделать желательно это средствами sql или самого Firebird-а.
Добавлено: 13 июн 2006, 11:17
kdv
Это чтобы у каждой записи был свой порядковый номер (1,2,3,4,5 и т.д.)
читать книги по проектированию БД, в частности про первичный ключ.
Насчет "сквозной нумерации" думать про многопользовательскую работу.
Добавлено: 13 июн 2006, 12:04
Pol777
kdv писал(а):
Насчет "сквозной нумерации" думать про многопользовательскую работу.
Не совсем я понимаю зачем мне думать про многопользовательскую работу, если я не собираюсь эту нумерацию сохранять в таблице.
Также я не совсем понимаю зачем Вы мне все время говорите про первичный ключ. Первичный ключ по-моему не предусматривает сквозной нумерации.
Добавлено: 13 июн 2006, 12:21
dimitr
ответ по сути - средствами FB это сделать можно только через селективную процедуру. Одним запросом - никак. Аналога ROW_NUMBER нет.
Добавлено: 13 июн 2006, 12:21
Ivan_Pisarevsky
Pol777 писал(а):Ivan_Pisarevsky писал(а):Это про первичный ключ энд генератор такой витееватый вопрос?
Это уж как Вам угодно.
Задача тривиальная - пронумеровать записи. Только сделать желательно это средствами sql или самого Firebird-а.
В файрберде все средства есть, отправлятесь почитать статьи на
www.ibase.ru поиск по контексту "primary key" и "generator".
Если же задача отдать на клиента пронумерованый список, то почитайте топик на
www.sql.ru поиском должен находиться.
Добавлено: 13 июн 2006, 12:33
kdv
если я не собираюсь эту нумерацию сохранять в таблице.
тогда надо нумеровать на клиенте. Причем, если речь идет об отчете, то так нумеровать умеет любой "отчетник".
Также я не совсем понимаю зачем Вы мне все время говорите про первичный ключ.
какой вопрос, такой и ответ. Из вопроса неясно, зачем нумеровать записи, причем использовать "сквозную нумерацию". Сквозная нумерация это вообще то непрерывная последовательность номеров, чаще ХРАНИМАЯ. Например, номера счетов-фактур.
Добавлено: 13 июн 2006, 12:37
Ivan_Pisarevsky
Добавлено: 13 июн 2006, 12:40
Pol777
Ivan_Pisarevsky писал(а):В файрберде все средства есть, отправлятесь почитать статьи на
www.ibase.ru поиск по контексту "primary key" и "generator".
Да не нужен мне не "primary key" не "generator"! Как вы понять не можете? Если изменить сортировку на обратную, что у Вас primary key поменяется? А в моем случае нумерация не должна поменяться!
Если же задача отдать на клиента пронумерованый список, то почитайте топик на
www.sql.ru поиском должен находиться.
Вы вот только и можете что советовать "куда пойти подальше"!
Искал я там и не раз.
Добавлено: 13 июн 2006, 12:43
Ivan_Pisarevsky
>Как вы понять не можете?
Честное пионерское, пытаюсь, но не выходит...
>Вы вот только и можете что советовать "куда пойти подальше"!
Вполне осязаемая ссылка постом выше ничего не дала???
Добавлено: 13 июн 2006, 12:44
Pol777
Ivan_Pisarevsky писал(а):>
>Вы вот только и можете что советовать "куда пойти подальше"!
Вполне осязаемая ссылка постом выше ничего не дала???
Извиняйте, вспылил!
Спасибо. Почитаю.
Добавлено: 15 июн 2006, 12:21
WildSery
Самое простые решения - процедура или на клиенте.
Но задачка вполне решаема одним только селектом (без генератора и дополнительных ухищрений типа rdb$db_key)
Причём, решаема даже для таблиц без первичного ключа и без уникальных полей. Хотя в этом случае запрос будет меняться для каждой сортировки.