Главная страница
    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.088 c
2-1160399737
zorik
2006-10-09 17:15
2006.10.29
расширить функции TCanvas


15-1160078005
Tuks
2006-10-05 23:53
2006.10.29
Не находится файл dclusr50.bpl


11-1136877665
BaryVetaL
2006-01-10 10:21
2006.10.29
Как преобразовать ICO которая находится в потоке в PBitmap?


15-1160100952
Slider007
2006-10-06 06:15
2006.10.29
С днем рождения ! 6 октября


2-1160620435
Ursula
2006-10-12 06:33
2006.10.29
События формы и кнопки





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