| 
| 
 | Вопрос # 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 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |