Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];

Вниз

Сложный запрос   Найти похожие ветки 

 
bmp2006 ©   (2006-08-29 16:54) [0]

Такая задача:
есть таблица t1 из полей

1. sys_num - уникальное int
2. num - int
3. open_date - дата
4. account - int

пример записей

|1|1|01.03.2005|29|
|2|3|01.03.2005|29|
|3|5|01.03.2005|33|
|4|1|01.03.2005|33|
|5|3|01.03.2005|33|
|6|2|02.03.2005|29|
|7|3|02.03.2005|29|
|8|5|02.03.2005|29|

Требуется изменить значения num таким образом чтобы они для каждой даты (для каждого нового дня) начинались с 1 и шли по порядку 1,2,3..
Чтобы в итоге было вот так:

|1|1|01.03.2005|29|
|2|2|01.03.2005|29|
|3|1|01.03.2005|33|
|4|2|01.03.2005|33|
|5|3|01.03.2005|33|
|6|1|02.03.2005|29|
|7|2|02.03.2005|29|
|8|3|02.03.2005|29|

Как это можно реализовать запросом?


 
bmp2006 ©   (2006-08-29 16:55) [1]

Извините, не совсем коректно задал вопрос, вот так правильно:
Такая задача:
есть таблица PARADOX t1 из полей:

1. sys_num - уникальное int
2. num - int
3. open_date - дата
4. account - int

пример записей

|1|1|01.03.2005|29|
|2|3|01.03.2005|29|
|3|5|01.03.2005|33|
|4|1|01.03.2005|33|
|5|3|01.03.2005|33|
|6|2|02.03.2005|29|
|7|3|02.03.2005|29|
|8|5|02.03.2005|29|

Требуется изменить значения num таким образом чтобы они для каждой даты (для каждого нового дня) и для каждого account начинались с 1 и шли по порядку 1,2,3..
Чтобы в итоге было вот так:

|1|1|01.03.2005|29|
|2|2|01.03.2005|29|
|3|1|01.03.2005|33|
|4|2|01.03.2005|33|
|5|3|01.03.2005|33|
|6|1|02.03.2005|29|
|7|2|02.03.2005|29|
|8|3|02.03.2005|29|

Для выполнения запросов использую DBD32(Борланд) Как это можно реализовать SQL запросом?


 
Anatoly Podgoretsky ©   (2006-08-29 17:00) [2]

|1|1|01.03.2005|29|
|3|1|01.03.2005|33|

Вот это противоречит твоему вопросу


 
ANB ©   (2006-08-29 18:01) [3]


> |1|1|01.03.2005|29|
> |3|1|01.03.2005|33|

Не противоречит.
Account сменился и нумерация пошла заново.
На оракле это делается элементарно. А вот в случае с парадоксом чувствую, без обработки на клиенте не обойтись . . .


 
Anatoly Podgoretsky ©   (2006-08-29 20:02) [4]

Требуется изменить значения num таким образом чтобы они для каждой даты (для каждого нового дня) начинались с 1 и шли по порядку 1,2,3..


 
saxon   (2006-08-29 20:11) [5]


> Anatoly Podgoretsky ©   (29.08.06 20:02) [4]

Автор просто не дописал 3 вариант вопроса, с уточнением - "в пределах account" (как можно понять)
:)


 
bmp2006 ©   (2006-08-30 11:02) [6]

Я же поправился, см. второе сообщение
"Извините, не совсем коректно задал вопрос, вот так правильно:...."
Так что никак???

А вот в случае с парадоксом чувствую, без обработки на клиенте не обойтись . . на каком клиенте? неужели никто никогда ничего подобного не делал?


 
Sergey13 ©   (2006-08-30 11:03) [7]

> [6] bmp2006 ©   (30.08.06 11:02)
> А вот в случае с парадоксом чувствую, без обработки на клиенте
> не обойтись . . на каком клиенте? неужели никто никогда
> ничего подобного не делал?
Это он так прогу, которую ты пишешь, так обозвал. 8-)


 
bmp2006 ©   (2006-08-30 11:33) [8]

А если в тексте программы Delphi или, что лучше для меня, C Builder? Есть идеи?


 
Sergey13 ©   (2006-08-30 11:37) [9]

> [8] bmp2006 ©   (30.08.06 11:33)

А какие идеи? Выбираешь, упорядоченный как тебе надо, набор данных и в цикле пронумеровываешь это поле как тебе надо.


 
bmp2006 ©   (2006-08-30 18:00) [10]

извините конечно за назойливость. а можно на примере?


 
ANB ©   (2006-08-30 18:09) [11]


> извините конечно за назойливость. а можно на примере?

можно. но деньги вперед.


 
bmp2006 ©   (2006-08-30 18:52) [12]

куда и сколько?


 
Anatoly Podgoretsky ©   (2006-08-30 19:33) [13]

Объяснил бы цель, откуда взяличь эти цифры и зачем их нужно перенумеровывать. Возможно для данной задачи будет проще навигационный метод.


 
bmp2006 ©   (2006-08-30 19:47) [14]

Эти цифры в таблице кот. используется другой программой. С нумерацией полный бардак. Записей в таблице около одного миллиона. Навигационный метод это метод ручного ковыряния? Тогда лучше убить себя об стену.


 
Anatoly Podgoretsky ©   (2006-08-30 20:18) [15]

bmp2006 ©   (30.08.06 19:47) [14]
Ну зачем себя убивать, запусти на ночь.


 
ANB ©   (2006-08-31 10:38) [16]


> bmp2006 ©   (30.08.06 19:47) [14]


Ладно, пользуйся моей добротой :

Значится пишешь запрос, отбирающий записи в нужном тебе порядке (order by), проверяещь где нибудь, что он работает так как тебе надо.
засовываешь запрос в кверю Query. Лепишь запрос на обновление в виде :
update t1
set num = :num
where sys_num
засовываешь его в кверю Update

дальше :

Query.Open;
N := 0;
open_date := Query.FieldByName("open_date").AsDate;
account  := Query.FieldByName("account").AsDate;
while not Query.eof do begin
 Inc(N);
 if not
((open_date = Query.FieldByName("open_date").AsDate) and
(account  = Query.FieldByName("account").AsDate))
 then begin
  open_date := Query.FieldByName("open_date").AsDate;
  account  := Query.FieldByName("account").AsInteger;
  N := 1;
 end;
 Update.ParamByName("sys_num").AsInteger := Query.FieldByName("sys_num").AsInteger;
 Update.ParamByName("num").AsInteger := N;
 Update.Execute;
 Query.Next;
end;

С тебя 75 рублей.



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

Форум: "Базы";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.039 c
15-1159915299
Multy
2006-10-04 02:41
2006.10.29
Ну и что это за уродство?


15-1160477050
sergey888
2006-10-10 14:44
2006.10.29
Какой купить автомобиль?


15-1160381309
Petr V. Abramov
2006-10-09 12:08
2006.10.29
Репозорий в BDS


1-1158764711
Alvin
2006-09-20 19:05
2006.10.29
Бесплатный Хостинг с поддержкой CGI на Delphi


2-1160558670
novill
2006-10-11 13:24
2006.10.29
Как из PWideChar получить Ansistring или Shortstring





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский