Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите плиз!!!!  [new]
Restruktor
Member

Откуда:
Сообщений: 4
есть 2 таблицы (a) и (б)
таблица (а) делится на столбцы (ID, NumberU)
таблица (б) делится на столбцы (PresentID, ID, SummID, FailID)
ID = (Номер карточки 1-100000), NumberU = (Колличество покупок0-100000), PresentID = (метка отображения заказа: 5 обычный, 6 дисконтный, 1 VIP)
FaiID = (Ложная покупка = 1, покупка = NULL), SummID = сумма скидки)
есть программа, которая заносит значения в определенном порядке в базу
у нас существую 2 вида дисконтов ID (скидка каждая 5 покупка 5 грн. и каждая 10-я покупка 10 грн.)
и есть исключения, которые нужно исправлять в ручную (пока) возвраты по дисконтной карточке т.е. если такой случай произошел, то нужно отнять 1 покупку от NumberU (количества покупок по дисконту) и убрать метку отображения PresentID с суммой скидки SummID
прога автоматом не делает этого, вот и сижу каждый день отлавливаю эти покупки и исправляю в ручную, прогу изменить не реально :(
Подскажите плиз чайнику, как написать правильно скрипт для чистки базы?
Для Киевлян - пиво не вопрос :)
29 авг 05, 15:36    [1825781]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз!!!!  [new]
vooo
Member

Откуда:
Сообщений: 1316
Воппросы:
В таблице а содержатся информация по кол-ву покупок по каждой карте?
В таблице б хранится история всех продаж по картам потранзакционно (хотя если это так почему не фиксируется дата операции)?
Можно привести пример содержимого таблиц а и б и на примере показать подробннее, что хотите в итоге получить
29 авг 05, 15:55    [1825910]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз!!!!  [new]
Restruktor
Member

Откуда:
Сообщений: 4
Да, NumberU содержит количество покупок по карте ID
29 авг 05, 17:30    [1826331]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз!!!!  [new]
vooo
Member

Откуда:
Сообщений: 1316
А NumberU может быть вычислено на основании данных таблицы б
например как
select ID,count(*) as NumberU
from таблицаБ
group by ID
если "да ", то таблица "а" не нужна (можно работать через VIEW соответствующего запроса)
.....

А вы так и не ответили на все вопросы (фрагмент содержимого таблиц + что в итоге надо получить)
29 авг 05, 17:55    [1826483]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз!!!!  [new]
Paul Sacks
Member

Откуда:
Сообщений: 1105
ИМХО: Надо с триггерочками работать...
29 авг 05, 17:56    [1826490]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз!!!!  [new]
Restruktor
Member

Откуда:
Сообщений: 4
UPDATE    _DiskontCard
SET              NumberOfUse = NumberOfUse -
                          (SELECT     COUNT(*)
                            FROM          _ExecutedOrders
                            WHERE      (_ExecutedOrders.DiscCardID = _DiskontCard.ID) AND (_ExecutedOrders.PresentID > 0) AND (_ExecutedOrders.DiscountSum > 0) AND (NOT (_ExecutedOrders.TypeFailID IS NULL)))

и вот это

update _ExecutedOrders set PresentID=5, DiscountSum = 0
where _ExecutedOrders.PresentID=6 and (_ExecutedOrders.SummID = 5 or _ExecutedOrders.DiscountSum = 10) and _ExecutedOrders.TupeFailID = 1)

надо в один скрипт засунуть
29 авг 05, 18:16    [1826562]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз!!!!  [new]
Restruktor
Member

Откуда:
Сообщений: 4
Restruktor
UPDATE    _DiskontCard
SET              NumberOfUse = NumberOfUse -
                          (SELECT     COUNT(*)
                            FROM          _ExecutedOrders
                            WHERE      (_ExecutedOrders.DiscCardID = _DiskontCard.ID) AND (_ExecutedOrders.PresentID > 0) AND (_ExecutedOrders.DiscountSum > 0) AND (NOT (_ExecutedOrders.TypeFailID IS NULL)))
этот скрипт виснет и выдается сообщение, что время ожидания истекло

и вот это

update _ExecutedOrders set PresentID=5, DiscountSum = 0
where _ExecutedOrders.PresentID=6 and (_ExecutedOrders.SummID = 5 or _ExecutedOrders.DiscountSum = 10) and _ExecutedOrders.TupeFailID = 1)

надо в один скрипт засунуть
29 авг 05, 18:17    [1826569]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить