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