Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.05;
Скачать: CL | DM;

Вниз

2000 Добавить в SELECT номер строки.   Найти похожие ветки 

 
KAA ©   (2002-08-14 19:17) [0]

Как можно в селекте сделать еще одно поле, в котором будет порядковый номер строки? Т.е. чтоб все строки были подряд пронумерованы.


 
Suntechnic ©   (2002-08-14 19:27) [1]

..а что есть порядковый номер? Что он должен собой символизировать? Уникалным идентификатором он не является... более того если ты два раза выполнишь один о тот же запрос никто тебе не сможет гарантировать что под номером 1 будет одна и таже запись. Можно конечно добавить вычисляемое поле и там счётчик вставить, но подумай зачем?


 
Polevi ©   (2002-08-14 20:06) [2]

затем что если в счете у тебя 200 позиций и клиент хочет одну из них исправить - проще всего найти ее по номеру


 
Anatoly Podgoretsky ©   (2002-08-14 20:33) [3]

Да но другой запрос может выдать в другой последовательности, если не используется упорядочивание, для исправления лучше использовать другие критерии.


 
Reindeer Moss Eater   (2002-08-14 20:37) [4]

>Polevi ©
Проще всего и всегда было искать по Primary Key.


 
Val ©   (2002-08-14 20:40) [5]

вечная тема...
надо бы в FAQ уже выкидывать, настолько частая.


 
Suntechnic ©   (2002-08-14 20:59) [6]

>Polevi © (14.08.02 20:06)
>затем что если в счете у тебя 200 позиций и клиент хочет одну из них исправить - проще всего найти ее по номеру

Найти по номеру что? Нет такого понятия в БД, как номер записи. Вопрос: что вы собираетесь найти по номеру который симолизирует собой позицию записи в окне? Так и говорите, "клиент хочет исправить первую попавщуюся запись", а для этого номер её позиции в окне не нужен.



 
KAA ©   (2002-08-15 09:24) [7]

Ничего по номеру искать не надо будет, это просто информационное поле. Запрос напрямую клиентским приложением без разбора загоняется в эксел. Одно из полей - это порядковый номер записи, как правильно заметил Polevi, это будет счет выдаваемый клиенту.

>Val
Так хоть подскажи, или ссылку дай.


 
Praco ©   (2002-08-15 09:25) [8]

Примерно так:
select (select count(*) from authors a1 where a1.au_id <= a.au_id), a.* from authors a
order by a.au_id

"а что есть порядковый номер?" А не нужно теоретизировать. Вопрос-то конкретный. Реальные воплощения SQL серверов, как правило, не соответствуют требованиям реляционной модели. Кроме того, если в форме отчета есть поле "№ п/п", не будешь же рассказывать юзеру теорию реляционных отношений.


 
KAA ©   (2002-08-15 09:36) [9]

>Praco

Можно чуть подробней, что такое a1, a и поле au_id ?

>Кроме того, если в форме отчета есть поле "№ п/п", не будешь же рассказывать юзеру теорию реляционных отношений.

Все именно так. :)


 
Mike Kouzmine   (2002-08-15 09:37) [10]

Так им. Молодец Praco. Я про "А не нужно теоретизировать.Кроме того, если в форме отчета есть поле "№ п/п", не будешь же рассказывать юзеру теорию реляционных отношений."


 
AlexSam   (2002-08-15 09:45) [11]

Если ты выводишь данные в QR можно построить через QRLabel в событии BeforePrint: i:=i+1


 
KAA ©   (2002-08-15 09:48) [12]

>AlexSam
В эксель я их вывожу.


 
Johnmen ©   (2002-08-15 09:55) [13]

>Praco © (15.08.02 09:25)
>Реальные воплощения SQL серверов, как правило, не соответствуют
>требованиям реляционной модели.

Каким это таким требованиям ???


 
wicked ©   (2002-08-15 10:04) [14]

2 Praco ©
спасибо за идеи... :)
(век живи - век учись...)


 
Reindeer Moss Eater   (2002-08-15 10:07) [15]

Если паровоз должен повернуть, совсем не обязательно в его топку бросать кривые дрова.
Не надо заставлять SQL сервер нумеровать возвращаемый рекордсет, надо нумеровать вставляемые в Excel данные.


 
KAA ©   (2002-08-15 10:10) [16]

2 Reindeer Moss Eater ©
>Не надо заставлять SQL сервер нумеровать возвращаемый рекордсет, надо нумеровать вставляемые в Excel данные.

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


 
Reindeer Moss Eater   (2002-08-15 10:12) [17]

>KAA
Не надо. Сделай запрос к данным из книги Excel. Тем более у тебя MSSQL.


 
Reindeer Moss Eater   (2002-08-15 10:14) [18]

Либо промежуточная таблица с дополнительным полем "Номер записи" спасет тебя.


 
KAA ©   (2002-08-15 10:16) [19]

2 Reindeer Moss Eater

Нет никакой книги эксел, ее клиент создает, отрабатывает и удаляет. Мало того, сегодня одна книга, завтра ее изменят, послезавтра какой-нибудь кристал репорт прикрутят, а процедура должна быть универсальной, чтоб один раз написать и забыть.


 
Polevi ©   (2002-08-15 10:17) [20]

2Suntechnic ©
Уважаемый, если у меня набор данных отсортирован по коду товара, я вполне могу расчитывать на то что каждый раз порядок строк будет одинаков (если не добавлять позиций). И не надо мне сообщать прописные истины насчет понятия номера записи. В моем понятии клиент это не оператор, который использует мою программу, а клиент компании с которым оператор работает.

2Reindeer Moss Eater
У меня в таблице содержимого счетов несколько милионов записей - пользователю конечно будет очень интересно узнать что первая позиция в его счете имеет номер 1347345 - вот они с клиентом будут общий язык находить по телефону когда клиент из мухосранска передумал и хочет вместо 10 шт товара взять 11 штук..


 
Reindeer Moss Eater   (2002-08-15 10:21) [21]

Сформируйте промежуточную таблицу, добавьте поле "Номер по порядку" Пройдитесь курсором и пронумеруйте это поле.


 
3JIA9I CyKA ©   (2002-08-15 10:32) [22]

Reindeer Moss Eater дело говорит!


 
Val ©   (2002-08-15 10:45) [23]

кстати, вопрос знатокам MSSQL: а нет ли у данного сервера такого замечательного псевдостолбца как rownum из Oracle?


 
Praco ©   (2002-08-15 10:49) [24]

KAA © (15.08.02 09:36)
au_id - уникальный идентификатор. a1 - алиас таблички. Если не понятно, почитай М.Грабера.

Johnmen © (15.08.02 09:55)
>Praco © (15.08.02 09:25)
>Реальные воплощения SQL серверов, как правило, не соответствуют
>требованиям реляционной модели.

Каким это таким требованиям ???

Например: в реляционной модели порядок следования полей не важен. В реальных SQL серверах поля пронумерованы и их порядок, как правило, важен.
NULL значения и операции с ними, трактовка доменов, и т.д.,... вспоминать не охота. Короче, теория реляционных отношений - наука, теория реляционных баз - прикладная псевдонаучка, слишком много упрощений и аксиом. Конкретный SQL сервер в стремлении расширить свои возможности еще больше отходит от требовани теории. MS SQL - яркий пример.
Главный аргумент: реляционное отношение не может быть ненормализовано, иначе это не отношение. Но любой SQL сервер позволяет создавать ненормализованные базы.
Продолжать не хочу, Дейта читал давно. :)




 
3JIA9I CyKA ©   (2002-08-15 10:53) [25]

2Val - Нету.


 
KAA ©   (2002-08-15 11:03) [26]

2 Praco ©
Все понял, протормозил немного. :)
Большое спасибо, сработало.


 
Johnmen ©   (2002-08-15 11:05) [27]

>Praco © (15.08.02 10:49)
>... В реальных SQL серверах поля пронумерованы и их порядок,
>как правило, важен.

Ты где такого начитался ????!!!!!!! :)))))

Уважаемый ! Поскольку ты читал давно, то видимо подзабыл основные моменты реляц.БД ! А теперь, извини, гонишь пургу...

И вообще, какое отнощение нумерация (см.вопрос) имеет к реляционности ???!!!


 
Val ©   (2002-08-15 11:06) [28]

тогда, скорее всего придется использовать курсор, как уже говорили, получаем соответственно потерю в скорости :(
Вариант же Praco © (15.08.02 09:25) безусловно хорош, но только если не важна сортировка, как я понял. А пользователь, как правило хочет видеть отсортированный и пронумерованный набор.


 
Johnmen ©   (2002-08-15 11:09) [29]

...И еще...Ты читал некоего и считаешь его рассуждения истиной в последней инстанции...Я же читал множество разных авторов, и они говорят несколько иное, чем Дейт...


 
Leran2002 ©   (2002-08-15 11:24) [30]

А можно такое проделать с Парадохом???
Типа попробывал:
select
(select count(*)
from "customer.db" a1
where a1.CustNo<=a.CustNo) as Num,
a.*
from "customer.db" a
order by a.CustNo

Такой запрос проканывает но во всех записях Num=0...


 
Mike Kouzmine   (2002-08-15 11:25) [31]

Сколько ни читай, и кого ни читай, а истина все равно где-то рядом. Познавший истину молчит, а не познавший - горячится.
(Себя к познавшим не отношу)


 
jonik pegas ©   (2002-08-15 11:37) [32]

Ты читал некоего и считаешь его рассуждения истиной в последней инстанции...Я же читал множество разных авторов, и они говорят несколько иное, чем Дейт...
Ну что же читай дальше
Был поставлен конкретный вопрос-Praco дал на него конкретный полный ответ!. Можно и поучиться.




 
Johnmen ©   (2002-08-15 11:51) [33]

>jonik pegas © (15.08.02 11:37) И иже с ним...

Отсутствие внимательности при прочтении постингов не является той чертой, которую надо обозначать и делать на основе этого саркастических замечаний.


 
3JIA9I CyKA ©   (2002-08-15 12:33) [34]

Кто посмел на Johnmen наезжать!?
Стыдно вам! ОН ЖЕ ПРАВ!!!


 
Mike Kouzmine   (2002-08-15 12:45) [35]

Прав тот, у кого больше прав или денег, что одно и тоже. Любое высказывание любого человека не истина в последней инстанции.
КАА получил задание и спросил конкретно, то надо отвечать конкретно или не отвечать. Ответ "нет и почему" или "да и как" - правильный, а все рассуждения типа "так делать неправильно потому что я (мы, они, и прочие уважаемые деятели) так не делают" являются бредом сивой кобылы.


 
Mike Kouzmine   (2002-08-15 12:47) [36]

3JIA9I CyKA © - стыдно у кого видно, а у кого болтается, то не считается


 
jonik pegas ©   (2002-08-15 12:50) [37]

Johnmen
Извиняюсь конечно. Погорячился...Мне стыдно
Но на основе совета Praco я сразу же наконец то сделал вывод порядкового номера в запросе для чего ранее мне необходимо было вспомогательное поле-(я задавал такой же вопрос ранее в форуме -ничего лучшего посоветовать не смогли)-отсюда и такая реакция. Но господа, по моему мы спорим на разные темы. Меня устраивает такая ПРАКТИЧЕСКАЯ реализация


 
Johnmen ©   (2002-08-15 12:56) [38]

>Mike Kouzmine (15.08.02 12:45)

Это ты к чему ?

>Mike Kouzmine (15.08.02 12:47)

>стыдно у кого видно< И тому, кто смотрит.

Ж:-))


 
KAA ©   (2002-08-15 12:58) [39]

Вообще мой, правда пока крайне небольшой, опыт показал одну вещь, если в программе допущена принципиальная ошибка, то на протяжении написания программы ты будешь с ней бороться, или с ее последствиями. Поэтому если что-то подобное заметил, лучше его в корне прсечь, или это придется сделать потом, когда надоест бороться.
Так что если теория говорит, что делать это не стоит, то надо прислушаться к подобному совету, а то приключений можно найти.

Но также надо помнить, что когда человек что-то спрашивает, а тебе кажется что это не правильно, вполне возможно что ты просто не знаешь каких-нибудь нюансов.

Так что идеальный ответ выглядел бы так: "То что ты хочешь несколько криво, и по хорошему это надо сделать так. Но если хочешь по своему делать, то делай вот так."


 
Johnmen ©   (2002-08-15 13:03) [40]

>jonik pegas © (15.08.02 12:50)

Забыли...
Я тоже иногда горячусь...
Совет Praco © (15.08.02 09:25) вполне премлем, согласен, но дальнейшие его рассуждения о реляц.модели меня сильно напрягли...:))))



Страницы: 1 2 вся ветка

Текущий архив: 2002.09.05;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.027 c
4-14323
_alx_
2002-07-03 18:06
2002.09.05
Вопрос по EMF


4-14342
smit_
2002-07-05 16:22
2002.09.05
Изменить стандартный диалог


1-14166
-=M-A-K-C=-
2002-08-24 22:42
2002.09.05
Как в мою прогу, неиспользующую Form, зусунуть HotKey


1-14067
панкер
2002-08-27 01:10
2002.09.05
кукисы маст дай!


4-14339
Марина
2002-07-05 14:44
2002.09.05
ShellExecute и ARJ.exe