|
Вопрос # 4 712/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Помогите пожалуйста написать скрипт который будет считать количество карточек в таблице card у каждой карты есть свой card_id. Потом будет проверять дату сервера и дату рождения участника из таблицы owner столбца date_of_birth. Таблицы card и owner связываются по card_id. При проверки по дате если день и месяц date_of_birth совпадает с серверной датой то должно начисляться определенное количество бонусов в столбец bonus_4 таблицы card бонусы берутся из таблицы act_new столбца amount_bonus. Структура БД MSSQL. Помогите пожалуйста.
 |
Вопрос задал: winterfell (статус: Посетитель)
Вопрос отправлен: 9 ноября 2010, 05:59
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 9; последнее сообщение — 11 ноября 2010, 10:27; участников в обсуждении: 4.
|
6ruse (статус: 1-ый класс), 9 ноября 2010, 07:36 [#1]:
можно полную структуру таблиц?
|
|
Vic (статус: 1-ый класс), 9 ноября 2010, 14:19 [#3]:
Напишите процедуру на сервере
Например вот так
if (SELECT COUNT(id_card),date_of_birth FROM card inner join owner on card.id_card=owner.id_card Group by day(date_of_birth) and
month(date_of_birth) having day(date_of_birth) = day(Getdate()) and month(date_of_birth) = month(GETDATE())) = здесь необходимое кол-во карт для начисления бонуса
Update card set bonus_4 = ваш бонус или что-то типа того
where здесь условия кому
|
|
Мережников Андрей (статус: Абитуриент), 9 ноября 2010, 20:50 [#4]:
для чего считать количество карт в одном запросе с изменением бонусов?
to Vic - Ваш запрос работать не будет, хотя бы потому, что вложенный запрос (SELECT COUNT(id_card),date_of_birth FROM...) возвращает значения двух полей, а сравнить пытаетесь с одним значением
|
|
winterfell (статус: Посетитель), 10 ноября 2010, 08:10 [#5]:
Вот скрипт который добавляет бонусы.
--теперь надо им начислить бонусы, для начала надо выбрать текущую акцию
--исходим из того что текущая акция всего одна
DECLARE @bonus_money money
SELECT TOP 1 @bonus_money = amount_bonus FROM act_new
WHERE GetDate() BETWEEN date_begin AND date_end AND active = 1 AND birthday = 1
--select convert(nvarchar(50),@bonus_money)
--GO
--Теперь добавим бонусы
UPDATE card
SET bonus_4 = bonus_4 + @bonus_money
WHERE card_id IN
(
SELECT card_id FROM card
WHERE card_id IN
(
SELECT card_id FROM owner
WHERE DAY(GetDate()) = DAY(date_of_birth) AND MONTH(GetDate()) = MONTH(date_of_birth)
)
)
SELECT * FROM card WHERE
и скрипт который списывает бонусы по истечению срока действия
UPDATE card
SET
bonus_4 = 0,
date_end_bonus = NULL
WHERE
cast(floor(cast(date_end_bonus AS float)) AS datetime) = cast(floor(cast(GetDate() AS float)) AS datetime)
А как сделать так чтобы сохраняло информацию в txt или excel формат о том сколько было начислено , кому, когда, дата списания бонусов ?
|
|
winterfell (статус: Посетитель), 11 ноября 2010, 04:56 [#6]:
Как сделать скрипт который будет сохранять историю начисления и списания бонусов в Excel.Таблицы должно быть две начислено и списано. Начислено содержит номер карты (card_number) из таблицы БД card, fio из таблицы owner, сумма бонусов начислено(charge_summ) и дата начисления (charge_date). также и для второй таблицы.Помогите пожалуйста.
|
|
Мережников Андрей (статус: Абитуриент), 11 ноября 2010, 05:29 [#7]:
Вы уверены, что на компьютере, где установлен MS SQL установлен и MS Excel?
|
|
winterfell (статус: Посетитель), 11 ноября 2010, 06:03 [#8]:
Уверен.
|
|
winterfell (статус: Посетитель), 11 ноября 2010, 10:27 [#9]:
Запрос на добавление данных написал, а как сделать чтобы это экспортировалось в excel файл?
SELECT O.F + ' ' + O.I + ' ' +O.o AS FIO, C.card_number,
B.charge_date, B.charge_summ
FROM OWNER O
INNER JOIN CARD C ON C.card_id = O.card_id
INNER JOIN ChargeBirth B ON B.card_id = O.card_id
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|