Форум: "Базы";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];
ВнизПроблема в составлении ХП Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.127 c