Главная страница
    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.042 c
1-1158908490
Василий Блаженный
2006-09-22 11:01
2006.10.29
TTrayIcon & baloon tips


2-1160465616
B0Bka
2006-10-10 11:33
2006.10.29
МП3 таг


15-1160219233
MikePetrichenko
2006-10-07 15:07
2006.10.29
Наша медецина


6-1149503312
Slaga
2006-06-05 14:28
2006.10.29
Доступ к Сервису с локальной сети.


2-1160746798
Дмитрий_Б
2006-10-13 17:39
2006.10.29
QickReport





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский