Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Аналог следующего update на Access-e [MySQL, Access]


Страницы:   1 2 3

Dmitry S ©   (2008-08-05 18:28:00) 

MySQL:

SET @i=0;
UPDATE `table` SET `field`=(@i:=@i+1) WHERE ... ORDER BY [name];

Как сделать тоже самое на Access-e?
Устно говоря, задача такая: пронумеровать по порядку таблицу в при определенной сортировке.


sniknik   (2008-08-06 13:19:00) [21]

> Какие еще проблемы?
хотели реально помочь...

с описанными ограничениями
UPDATE [table]
SET [field]=DSum(1, '[table]' , 'name<='''+table.name+'''')


Сергей М.   (2008-08-06 13:18:00) [22]


> записи выбраны не очевидным условием WHERE


Это еще что за зверь ?)


> изза 10 строк тащить из базы еще 15000


А никто и не заставляет тебя их всех тащить.

С другой стороны, как юзер узнает , что ему нужно оперировать с M записями, начиная с N-ной, пока он не увидит всеK записей, среди которых фигурируют эти самые N интересующих его записей ?


Medbe}I{onok XML   (2008-08-06 13:16:00) [23]

Если делаю, значит оно так нужно мне.

нужно нумеровать строки - нумеруй. в шаблоне отчета.


Ega23   (2008-08-06 13:16:00) [24]


> Оно вам надо, знать для чего я это делаю? Если делаю, значит
> оно так нужно мне. Какие еще проблемы?


Да делай, кто мешает-то? Ты сначала проблему сформулируй. из твоего [21] нихрена не понятно.


Dmitry S   (2008-08-06 13:15:00) [25]

Удалено модератором


Medbe}I{onok XML   (2008-08-06 13:15:00) [26]

ну как как.
печатать же можно только то, что видишь в гриде.
"что вижу, то и пою"


Johnmen   (2008-08-06 13:11:00) [27]


>  Необходимо напечатать 10 строк начиная с N-ой - делается
> просто с помощью LIMIT-а или его аналога

Хм... Как связан предикат LIMIT с печатью?
:)


Medbe}I{onok XML   (2008-08-06 13:10:00) [28]

а при печати строки важно выводить ее номер.

Нумерация на печати делается средствами репортера.


Ega23   (2008-08-06 13:09:00) [29]


> 2. А, например, необходимо напечатать строки определенной
> группы


Блин. Я нихрена не понял, что тебе всё-таки надо.


Dmitry S   (2008-08-06 13:06:00) [30]


> Сервер тебе отдал НД в требуемой тебе сортировке, получи
> его и пронумеруй полученное как тебе надо, в чем проблема-
> то ?)

см [21].2


Dmitry S   (2008-08-06 13:05:00) [31]


> Ega23 ©   (06.08.08 12:58) [17]

Вот к примеру задачи такая:
1. Необходимо напечатать 10 строк начиная с N-ой - делается просто с помощью LIMIT-а или его аналога, если он есть в Access-е.

2. А, например, необходимо напечатать строки определенной группы (т.е. записи выбраны не очевидным условием WHERE), а при печати строки важно выводить ее номер. А изза 10 строк тащить из базы еще 15000 (в среднем), нумеровать, а потом фильтровать не хочется - это долго. Поэтому мной и было решено поместить эти данные в таблицу.


Medbe}I{onok XML   (2008-08-06 13:01:00) [32]

в чем проблема-то ?)

проблема у него в кислоте. дезоксирибонуклеиновой


Сергей М.   (2008-08-06 13:00:00) [33]


> Как пронумеровать по порядку таблицу при определенной сортировке?


Нумеруй себе на здоровье на клиентскойстороне, зачем для своих странностей привлекать сервер-то ?

Сервер тебе отдал НД в требуемой тебе сортировке, получи его и пронумеруй полученное как тебе надо, в чем проблема-то ?)


Medbe}I{onok XML   (2008-08-06 12:59:00) [34]

Пользователь вводит номер, по которому осуществляется поиск.

Юзер ввел десять и надо найти десятую запись?
Для этого не надо ничего нумеровать.


Ega23   (2008-08-06 12:58:00) [35]


> Как пронумеровать по порядку таблицу при определенной сортировке?


Вот смотри. Я получил НД на клиент. Дальше я могу сделать с ним всё, что хочу. Могу наложить фильтр, тогда часть записей скроется. Могу наложить правило(а) сортировки. Причём применять их по банальному OnTitleClick грида. И каждый раз порядок представления НД будет другим.

Так что ты хочешь получить?


Dmitry S   (2008-08-06 12:54:00) [36]


> до меня дошло!

Не правильно дошло, зря ветку переместил.

Мне нужно выводить порядковый номер строки для любой части выборки этих строк.

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

А также для быстрого поиска строки с определенным номером. Пользователь вводит номер, по которому осуществляется поиск. Строить дерево при этом очень накладно :(

И вообще вопрос не о том, как планировать структуру БД, а вполне конкретный: Как пронумеровать по порядку таблицу при определенной сортировке?


sniknik   (2008-08-06 12:07:00) [37]

до меня дошло!
он пытается сделать идентификацию записей по порядковому номеру (для чего нужны ключи ему видимо неведомо...).
> и этот номер нужен при такой выборке.
тот же номер у него и для показу пользователю...
> потому что должна восприниматься человеком, как нумерация по-порядку.


sniknik   (2008-08-06 11:54:00) [38]

сделать можно, правда с ограничениями...
первое - уникальные значения у сортируемого поля/полей. (фактически требуется наличие ключа, чего в [0] и далее не видно)

и второе, самое главное... необходимо обьяснить смысл этих манипуляций, т.к. тому кто этот запрос будет составлять (я например) надо победить природную лень, и нежелание выполнять бессмысленную работу...

> SET @i=0;
> UPDATE 'table' SET 'field'=(@i:=@i+1) WHERE ... ORDER BY [name];
вот какой смысл?
пронумеровать физически в таблице часть данных (имеется WHERE) если по определению sqlсерверу на любую нумерацию плевать. т.е. серверу это не нужно.
пользователю? а ему оно нафиг? ктото например пронумеровал в таблице всех с именем "сергей", и тут же, с именем "марина", или вообще не с именем а всех женского пола... что ему даст тот бардак, что в результате будет в этй "нумерации"? или предполагается выборку делать сразу после нумерации? тогда почему не нумеровать именно выборку (тем более там это уже есть), нафига сохранять бессмысленные вне контекста результаты в базу?

> Вот в общих чертах.
не убедительно. не обьясняет нафига оно физически в базе.


Dmitry S   (2008-08-06 11:52:00) [39]

Есть документ, в нем строки, грубо говоря. Строки в документе структурированы в виде дерева.

[doc] - таблица документов (Поля: doc_id, name, ...)
[line] - таблица строк (Поля: line_id, doc_id, linegroup_id, pos, name, ...)
[linegroup] - таблица для задания структуры. Она общая для всех документов. (Поля: linegroup_id, linegroupparent_id, name).

В line содержатся строки всех документов. Принадлежность строки документу определяется полем doc_id.

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

Строки из базы могут извлекаться как угодно (одна конкретная запись, блок записей), и этот номер нужен при такой выборке. К тому же нужен будет поиск записи с определенным номером.

Вот в общих чертах.


Ega23   (2008-08-06 11:39:00) [40]

Делай нумерацию на клиенте. Нафига на сервере-то?


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо