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

Вниз

Проблема в составлении ХП   Найти похожие ветки 

 
Koala   (2004-07-13 11:26) [0]

Как собака, понимать понимаю, а сказать не могу.... (народная мудрость).
Такая проблема, есть таблица, в ней поля:(ID(первичный, уникальный ключ), pole1(вторичный ключ), pole2, pole3, pole4, pole5).
По теории пользователь не должен изменять данные за прошлый период, но как и везде есть исключения...
Пользователь изменяет pole3 которое было допустим 95,7 на 89. разница в 6,7. Так вот задача следующая, необходимо значение pole3 изменить на 89, а затем по ключу pole1 выбрать строки и изменить значения в pole2 и pole3 на 6,7 отталкиваясть от записи которую пользователь изменил.
Пример:
Таблица OLD
pole1, pole2, pole3, pole4, pole5
1      1      85     92.3   150
2      1      92.3   98.3   130
3      2      16     22.5   150
4      1      98.3   108.7  100
5      2      22.5   28.3   150

Таблица New
pole1, pole2, pole3, pole4, pole5
1      1      85     92.3   150
2      1      92.3   93.3   130
3      2      16     22.5   150
4      1      93.3   103.7  100
5      2      22.5   28.3   150
надеюсь что понятно изложил...


 
Соловьев ©   (2004-07-13 11:31) [1]

не понятно


 
Sandman25 ©   (2004-07-13 11:38) [2]

А мне понятно, что неверно спроектирована БД. При приходах-расходах не нужно записывать старое значение остатка и новое значение. Нужно записывать только сам приход-расход, а остатки посчитаются при выборке select sum(prih_rash_kolvo)


 
Sandman25 ©   (2004-07-13 11:40) [3]

update t set pole1 = pole1 + mychange, pole2 = pole2 + mychange where pole2 = mypole2 and pole1 >= mypole1


 
Курдль ©   (2004-07-13 11:40) [4]

Это одна и та же таблица?
А что значит "вторичный ключ"?
Я всех авторов прошу приоткрыть хоть часть бизнес-процесса, а не ездить по мозгам своими "pole_1..." :(


 
Sandman25 ©   (2004-07-13 11:41) [5]

update t set pole3 = pole3 + mychange, pole4 = pole4 + mychange where pole2 = mypole2 and pole1 >= mypole1


 
Sandman25 ©   (2004-07-13 11:49) [6]

Все равно неправильно :)
Нужно 2 запроса - один для pole1=mypole1, другой для pole1>mypole1


 
Koala   (2004-07-13 11:53) [7]

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


 
Sandman25 ©   (2004-07-13 11:56) [8]

[7] Koala   (13.07.04 11:53)

Есть таблица текущих остатков.

Shofer_id, ostatok

Есть таблица расходов-приходов.

Shofer_id, kolvo

При изменении 1 записи во второй таблице срабатывает триггер и изменяет 1 запись в первой таблице. И никаких накатов.


 
Johnmen ©   (2004-07-13 11:57) [9]

>Sandman25 ©   (13.07.04 11:38) [2]

Полностью согласен.

>Koala

Перепроектируй в соответствии с теорией.


 
Koala   (2004-07-13 12:01) [10]

база была на Dbase? перевожу на FireBird, так-что все только проектируется и любая помощь или совет приветствуется на УРА...

> Sandman25 ©   (13.07.04 11:56) [8]

я это и приблизительно понял, но как сделать ???????? не знаю с IB FB только начинаю работать


 
Sandman25 ©   (2004-07-13 12:24) [11]

[10] Koala   (13.07.04 12:01)

Читать документацию. ibase.ru тоже поможет.
create trigger ...


 
Ильш ©   (2004-07-13 12:31) [12]

ДОКИ forever !!!
КНИГИ  forever !!!
в конце концов F1  forever !!!
:))))

спроектировано опупительски.. :( надо переделывать.. но перед этим читать теорию.... ЧИТАТЬ !!!!


 
Koala   (2004-07-13 12:52) [13]


> Ильш ©   (13.07.04 12:31) [12]

проектировалась как локальная, для 1 чела, но работают теперь 5 чел. приходится переделывать, и база очень сильно выросла, тупит и сыпется


 
Ильш ©   (2004-07-13 13:14) [14]

дело не локальности... дело в структуре :(



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

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

Наверх




Память: 0.5 MB
Время: 0.047 c
3-1089655610
Forelli
2004-07-12 22:06
2004.08.08
Работа СУБД без InterBase и Delphi.


6-1086457277
SergP
2004-06-05 21:41
2004.08.08
TWebBrowser + Enter


14-1090308824
Baron
2004-07-20 11:33
2004.08.08
Возрастные категории.


14-1090071933
sucer
2004-07-17 17:45
2004.08.08
Живучисть HDD при переноски


6-1086678438
leonidus
2004-06-08 11:07
2004.08.08
Вопрос по TWebBrowser