powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с процедурой
6 сообщений из 6, страница 1 из 1
Помогите с процедурой
    #40100010
alexandrDr87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую многоуважаемые форумчане!

Не знаю как подступиться к задаче. У меня есть таблица вида:

Таблица: Шаблоны задач

Task | Peroid | Description
===========================
Задача 1 | пн,ср,пт | Описание 1
===========================
Задача 2 | вт,сб,вс | Описание 2
===========================
Задача 3 | пн, сб | Описание 3

Мне нужно сделать процедуру, которая бы запускалась по расписанию раз в день например и парсила эту таблицу в другую таблицу по условию: если день запуска процедуры совпадает с перечислением в строке Period, то формируется запись в таблице Задачи на текущий день

Таблица: Задачи на текущий день

Date | Task | Description
=============================
24.09.2021 | Задача 1 | Описание 1
=============================
25.09.2021 | Задача 2 | Описание 2
=============================
25.09.2021 | Задача 3 | Описание 3

Я сделал такую функцию на JavaScript, но мне нужно все же сделать это на уровне базы.
скрипт, реализующий это прикладываю

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
//функция запрашивает данные из таблицы Шаблоны задач

let dayTasks = [];
async getDayTasks() {
 let res = await this.$clientApi.get('tasks')
 let rawData = res && res.data ? res.data : {};

 //возвращаем день недели
 function getWeekDay(date) {
   let days = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'];
   return days[date.getDay()];
 }
 dayTasks = []
 for (let i = 0; i < rawData.length; i++) {
   let arr = {
     task: rawData[i].taskName,
     description: rawData[i].description,
     period: rawData[i].period.trim().toLowerCase().replace(/\s+/g, '').split(','),
   }
   // найдем и добавим в результат только те задачи, у которых в periodicity есть текущий день
   if (arr.periodicity.indexOf(getWeekDay(new Date())) !== -1) {
     await dayTasks.push(arr)
     await this.dataSource.load();
   }
// на выходе в dayTasks получаем только задачи на текущую дату запуска скрипта и можем записать их уже в другую таблицу Задачи на текущий день
 }



Помогите если не прямым решением, то хотя бы направлением как такое написать на T-SQL
...
Рейтинг: 0 / 0
Помогите с процедурой
    #40100012
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexandrDr87,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SET DATEFIRST 1
declare @daytask table ( date datetime,  Task varchar(10), Description varchar(100))
declare @table table ( Task varchar(10), Peroid  varchar(20), Description varchar(100))
declare @week table (id int, wday varchar(5))
insert into @week (id, wday)
values (1, 'пн'),(2, 'вт'),(3, 'ср'),(4, 'чт'),(5, 'пт'),(6, 'сб'),(7, 'вс')
insert into @table
values 
('Задача 1',  'пн,ср,пт',  'Описание 1'),
('Задача 2', 'вт,сб,вс',  'Описание 2'),
('Задача 3',  'пн, сб',  'Описание 3')

insert into @daytask 
select getdate(),  t.Task, t.Description from @table t
where  CHARINDEX((select wday from @week where id = DATEPART(dw, getdate())), t.Peroid ,1)>0
...
Рейтинг: 0 / 0
Помогите с процедурой
    #40100013
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
(select wday from @week where id = DATEPART(dw, getdate())) можно выделить в отдельную переменную для скорости
т.е.
Код: sql
1.
2.
3.
4.
5.
6.
declare @wday varchar(2)
set @wday = (select wday from @week where id = DATEPART(dw, getdate()))

insert into @daytask 
select getdate(),  t.Task, t.Description from @table t
where  CHARINDEX(@wday, t.Peroid ,1)>0
...
Рейтинг: 0 / 0
Помогите с процедурой
    #40100168
alexandrDr87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
godsql,

Спасибо за помощь!
...
Рейтинг: 0 / 0
Помогите с процедурой
    #40100262
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexandrDr87
godsql,

Спасибо за помощь!


Будьте осторожны, там ошибка
...
Рейтинг: 0 / 0
Помогите с процедурой
    #40100335
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг Хупин,

какая?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с процедурой
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]