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

Откуда:
Сообщений: 204
Здравствуйте, пишу программу для составления расписания сотрудников, в ходе анализа логики пришел к нижеописанной структуре данных. Разумеется, в главном окне нужно показать список сотрудников с расписанием их работы. Предполагается, что пользователь будет «на ходу» менять/устанавливать жесткие рамки рабочего дня сотрудника, кликая мышкой в ячейку и устанавливать период времени. Затем логика будет анализировать ограничения, и менять соответственно график работы других сотрудников. Словом классическое решение задачи планирования в частном случае.

+

DECLARE @WORKDAYS TABLE(WorkDayId INT IDENTITY(1,1) NOT NULL, [DayName] NVARCHAR(100), DayDate DATETIME)
INSERT @WORKDAYS([DayName], DayDate)
VALUES
('1.11.2013', '2013-11-01'),
('2.11.2013', '2013-11-02'),
('3.11.2013', '2013-11-03'),
('4.11.2013', '2013-11-04'),
('5.11.2013', '2013-11-05'),
('6.11.2013', '2013-11-06'),
('7.11.2013', '2013-11-07'),
('8.11.2013', '2013-11-08')
SELECT WorkDayId, [DayName], DayDate FROM @WORKDAYS

DECLARE @EMPLOYEES TABLE(EmployeeId INT IDENTITY(1,1) NOT NULL, FullName NVARCHAR(100))
INSERT @EMPLOYEES(FullName)
VALUES
('Пономарева'),
('Смирнова'),
('Попова'),
('Егорова'),
('Чернышева'),
('Михайлова'),
('Виноградова'),
('Макарова')
SELECT EmployeeId, FullName FROM @EMPLOYEES

DECLARE @WORKTIMES TABLE(WorkTimeId INT IDENTITY(1,1) NOT NULL, WorkDayId INT, EmployeeId INT, TimeName NVARCHAR(100), StartTime DATETIME, EndTime DATETIME)
INSERT @WORKTIMES(WorkDayId, EmployeeId, TimeName, StartTime, EndTime)
VALUES
(1, 1, 'Пятница', '2013-11-01 00:00:00.000', '2013-11-01 00:06:00.000'),
(1, 2, 'Пятница', '2013-11-01 00:06:00.000', '2013-11-01 00:12:00.000'),
(1, 3, 'Пятница', '2013-11-01 00:12:00.000', '2013-11-01 00:18:00.000'),
(1, 4, 'Пятница', '2013-11-01 00:18:00.000', '2013-11-02 00:00:00.000'),
(2, 5, 'Суббота', '2013-11-02 00:00:00.000', '2013-11-02 00:06:00.000'),
(2, 6, 'Суббота', '2013-11-02 00:06:00.000', '2013-11-02 00:12:00.000'),
(2, 7, 'Суббота', '2013-11-02 00:12:00.000', '2013-11-02 00:18:00.000'),
(2, 8, 'Суббота', '2013-11-02 00:18:00.000', '2013-11-03 00:00:00.000'),
(3, 1, 'Воскресенье', '2013-11-03 00:00:00.000', '2013-11-03 00:06:00.000'),
(3, 2, 'Воскресенье', '2013-11-03 00:06:00.000', '2013-11-03 00:12:00.000'),
(3, 3, 'Воскресенье', '2013-11-03 00:12:00.000', '2013-11-03 00:18:00.000'),
(3, 4, 'Воскресенье', '2013-11-03 00:18:00.000', '2013-11-03 00:00:00.000'),
(4, 5, 'Понедельник', '2013-11-04 00:00:00.000', '2013-11-04 00:06:00.000'),
(4, 6, 'Понедельник', '2013-11-04 00:06:00.000', '2013-11-04 00:12:00.000'),
(4, 7, 'Понедельник', '2013-11-04 00:12:00.000', '2013-11-04 00:18:00.000'),
(4, 8, 'Понедельник', '2013-11-04 00:18:00.000', '2013-11-05 00:00:00.000'),
(5, 1, 'Вторник', '2013-11-05 00:00:00.000', '2013-11-05 00:06:00.000'),
(5, 2, 'Вторник', '2013-11-05 00:06:00.000', '2013-11-05 00:12:00.000'),
(5, 3, 'Вторник', '2013-11-05 00:12:00.000', '2013-11-05 00:18:00.000'),
(5, 4, 'Вторник', '2013-11-05 00:18:00.000', '2013-11-06 00:00:00.000'),
(6, 5, 'Среда', '2013-11-06 00:00:00.000', '2013-11-06 00:06:00.000'),
(6, 6, 'Среда', '2013-11-06 00:06:00.000', '2013-11-06 00:12:00.000'),
(6, 7, 'Среда', '2013-11-06 00:12:00.000', '2013-11-06 00:18:00.000'),
(6, 8, 'Среда', '2013-11-06 00:18:00.000', '2013-11-07 00:00:00.000'),
(7, 5, 'Четверг', '2013-11-07 00:00:00.000', '2013-11-07 00:06:00.000'),
(7, 6, 'Четверг', '2013-11-07 00:06:00.000', '2013-11-07 00:12:00.000'),
(7, 7, 'Четверг', '2013-11-07 00:12:00.000', '2013-11-07 00:18:00.000'),
(7, 8, 'Четверг', '2013-11-07 00:18:00.000', '2013-11-08 00:00:00.000'),
(8, 1, 'Пятница', '2013-11-08 00:00:00.000', '2013-11-08 00:06:00.000'),
(8, 2, 'Пятница', '2013-11-08 00:06:00.000', '2013-11-08 00:12:00.000'),
(8, 3, 'Пятница', '2013-11-08 00:12:00.000', '2013-11-08 00:18:00.000'),
(8, 4, 'Пятница', '2013-11-08 00:18:00.000', '2013-11-09 00:00:00.000')
SELECT WorkTimeId WorkDayId, EmployeeId, TimeName, StartTime, EndTime FROM @WORKTIMES



Как будто уже все продумал, но не хочется бизнес-логику нагружать дополнительными задачами отображения, поэтому решил все делать в БД. К сожалению, БД представлена «детской версией» SQL Server - Compact Edition 3.5

Если у кого есть возможность помочь направить на верный путь, помогите, пожалуйста.
Нужно написать запрос к структуре БД, чтобы получить следующий результат:


Сотрудник 1 2 3 4 5 6 7 8 и т.д. WorkDayId
Пономарева WorkTimeId WorkTimeId WorkTimeId WorkTimeId WorkTimeId WorkTimeId WorkTimeId WorkTimeId и т.д. WorkTimeId
Смирнова WorkTimeId WorkTimeId WorkTimeId WorkTimeId WorkTimeId WorkTimeId WorkTimeId WorkTimeId и т.д. WorkTimeId
Попова WorkTimeId WorkTimeId WorkTimeId WorkTimeId WorkTimeId WorkTimeId WorkTimeId WorkTimeId и т.д. WorkTimeId


Спасибо за внимание!
3 ноя 13, 20:48    [15072439]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос к SQL Server CE 3.5  [new]
Torre
Member

Откуда:
Сообщений: 204
Проблему решил, пришлось создать контрол, который выполняет данный функционал.
5 ноя 13, 00:45    [15076336]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить