DROP TABLE IF EXISTS `Справка+`;
CREATE TABLE `Справка+`
(`Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Слк` CHAR (4) NOT NULL
, `Код` CHAR (4) NOT NULL
, `Название` VARCHAR (50) NOT NULL
, CONSTRAINT `УН\СПР` UNIQUE KEY (`Слк`, `Код`));
INSERT INTO `Справка+` VALUES
(DEFAULT, "ДОЛ", "СПЕ", "Должность специалиста"),
(DEFAULT, "ДОЛ", "РУК", "Должность руководителя"),
(DEFAULT, "ДОП", "ДОП", "Допуск"),
(DEFAULT, "ФОР", "ФОР", "Форма допуска"),
(DEFAULT, "ВИДО", "ВИДО", "Вид документа");
SELECT "`Справка+` Table Content:" FROM `Справка+` WHERE 1 = 0;
SELECT * FROM `Справка+`;
DROP TABLE IF EXISTS `Сотрудник%ПЕРС`;
CREATE TABLE `Сотрудник%ПЕРС`
(`Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Код` CHAR (10) NOT NULL UNIQUE KEY
, `Паспорт` CHAR (10) NOT NULL UNIQUE
, `ФИО` VARCHAR (50) NOT NULL
, `Ид_ДОЛ\СОТ^СПР` INT NOT NULL
REFERENCES `Справка+` (`Ид`)
, `Ид_ДОП\СОТ^СПР` INT NOT NULL
REFERENCES `Справка+` (`Ид`));
INSERT INTO `Сотрудник%ПЕРС` SET
`Ид` = DEFAULT, `Код` = "001-РУК", `Паспорт` = "547489", `ФИО` = "Котов К. В.",
`Ид_ДОЛ\СОТ^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ДОЛ" AND `Код` = "РУК"),
`Ид_ДОП\СОТ^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ДОП" AND `Код` = "ДОП");
INSERT INTO `Сотрудник%ПЕРС` SET
`Ид` = DEFAULT, `Код` = "001-СПЕ", `Паспорт` = "694930", `ФИО` = "Третьяков А. К.",
`Ид_ДОЛ\СОТ^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ДОЛ" AND `Код` = "СПЕ"),
`Ид_ДОП\СОТ^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ДОП" AND `Код` = "ДОП");
INSERT INTO `Сотрудник%ПЕРС` SET
`Ид` = DEFAULT, `Код` = "002-СПЕ", `Паспорт` = "876543", `ФИО` = "Демьянова В. В.",
`Ид_ДОЛ\СОТ^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ДОЛ" AND `Код` = "СПЕ"),
`Ид_ДОП\СОТ^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ДОП" AND `Код` = "ДОП");
INSERT INTO `Сотрудник%ПЕРС` SET
`Ид` = DEFAULT, `Код` = "003-СПЕ", `Паспорт` = "234589", `ФИО` = "Никитина Н. М.",
`Ид_ДОЛ\СОТ^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ДОЛ" AND `Код` = "СПЕ"),
`Ид_ДОП\СОТ^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ДОП" AND `Код` = "ДОП");
SELECT "`Сотрудник%ПЕРС` Table Content:" FROM `Сотрудник%ПЕРС` WHERE 1 = 0;
SELECT * FROM `Сотрудник%ПЕРС`;
DROP TABLE IF EXISTS `Руководитель: СОТ`;
CREATE TABLE `Руководитель: СОТ`
(`Ид\РУК^СОТ` INT NOT NULL
PRIMARY KEY REFERENCES `Сотрудник%ПЕРС` (`Ид`));
INSERT INTO `Руководитель: СОТ` SET
`Ид\РУК^СОТ` = (SELECT `Ид` FROM `Сотрудник%ПЕРС` WHERE `Код` = "001-РУК");
SELECT "`Руководитель: СОТ` Table Content:" FROM `Руководитель: СОТ` WHERE 1 = 0;
SELECT * FROM `Руководитель: СОТ`;
DROP TABLE IF EXISTS `Специалист: СОТ`;
CREATE TABLE `Специалист: СОТ`
(`Ид\СПЕ^СОТ` INT NOT NULL
PRIMARY KEY REFERENCES `Сотрудник%ПЕРС` (`Ид`));
INSERT INTO `Специалист: СОТ` SET
`Ид\СПЕ^СОТ` = (SELECT `Ид` FROM `Сотрудник%ПЕРС` WHERE `Код` = "001-СПЕ");
INSERT INTO `Специалист: СОТ` SET
`Ид\СПЕ^СОТ` = (SELECT `Ид` FROM `Сотрудник%ПЕРС` WHERE `Код` = "002-СПЕ");
INSERT INTO `Специалист: СОТ` SET
`Ид\СПЕ^СОТ` = (SELECT `Ид` FROM `Сотрудник%ПЕРС` WHERE `Код` = "003-СПЕ");
SELECT "`Специалист: СОТ` Table Content:" FROM `Специалист: СОТ` WHERE 1 = 0;
SELECT * FROM `Специалист: СОТ`;
DROP TABLE IF EXISTS `Представитель%ПЕРС`;
CREATE TABLE `Представитель%ПЕРС`
(`Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Код` CHAR (10) NOT NULL UNIQUE KEY
, `Паспорт` CHAR (10) NOT NULL UNIQUE
, `ФИО` VARCHAR (50) NOT NULL);
INSERT INTO `Представитель%ПЕРС` VALUES
(DEFAULT, "001-ПРЕ", "866790", "Самойлова О. В."),
(DEFAULT, "002-ПРЕ", "123467", "Ковалев А. К.");
SELECT "`Представитель%ПЕРС` Table Content:" FROM `Представитель%ПЕРС` WHERE 1 = 0;
SELECT * FROM `Представитель%ПЕРС`;
DROP TABLE IF EXISTS `Разрешение`;
CREATE TABLE `Разрешение`
(`Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Регномер` CHAR (10) NOT NULL UNIQUE KEY
, `Дата` CHAR (10) NOT NULL);
INSERT INTO `Разрешение` VALUES
(DEFAULT, "123-1", "12.09.2023"),
(DEFAULT, "123-2", "22.12.2023");
SELECT "`Разрешение` Table Content:" FROM `Разрешение` WHERE 1 = 0;
SELECT * FROM `Разрешение`;
DROP TABLE IF EXISTS `Приказ`;
CREATE TABLE `Приказ`
(`Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Регномер` CHAR (10) NOT NULL UNIQUE KEY
, `Дата` CHAR (10) NOT NULL
, `Ид\ПРИК^РУК` INT NOT NULL
REFERENCES `Руководитель: СОТ` (`Ид\РУК^СОТ`));
INSERT INTO `Приказ` SET
`Ид` = DEFAULT, `Регномер` = "143-1", `Дата` = "15.09.2023",
`Ид\ПРИК^РУК` = (SELECT * FROM `Руководитель: СОТ` WHERE 1);
INSERT INTO `Приказ` SET
`Ид` = DEFAULT, `Регномер` = "112-2", `Дата` = "26.12.2023",
`Ид\ПРИК^РУК` = (SELECT * FROM `Руководитель: СОТ` WHERE 1);
SELECT "`Приказ` Table Content:" FROM `Приказ` WHERE 1 = 0;
SELECT * FROM `Приказ`;
DROP TABLE IF EXISTS `Допуск сотрудника\СОТ`;
CREATE TABLE `Допуск сотрудника\СОТ`
(`Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`НПП` CHAR (10) NOT NULL
, `Основание для присвоения` CHAR (150) NOT NULL
, `Основание для снятия` CHAR (150) NULL
, CONSTRAINT `УН\ДОП` UNIQUE KEY (`НПП`, `Ид\ДОП^СОТ`)
, `Ид\ДОП^СОТ` INT NOT NULL
REFERENCES `Сотрудник%ПЕРС` (`Ид`),
`Ид\ДОП^ПРИК` INT NOT NULL
REFERENCES `Приказ` (`Ид`),
`Ид\ДОП^СПР` INT NOT NULL
REFERENCES `Справка+` (`Ид`),
`Ид\ДОП^СПЕЦ` INT NOT NULL
REFERENCES `Специалист: СОТ` (`Ид\СПЕ^СОТ`),
`Ид\ДОП^РАЗ` INT NOT NULL
REFERENCES `Разрешение` (`Ид`));
INSERT INTO `Допуск сотрудника\СОТ` SET
`Ид` = DEFAULT, `НПП` = "1",
`Ид\ДОП^СОТ` = (SELECT `Ид` FROM `Сотрудник%ПЕРС` WHERE `Код` = "001-РУК"),
`Основание для присвоения` = "Направление в другие организации для выполнения работ с
использованием сведений, составляющих тайну", `Основание для снятия` = NULL,
`Ид\ДОП^ПРИК` = (SELECT `Ид` FROM `Приказ` WHERE `Регномер` = "143-1"),
`Ид\ДОП^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ФОР" AND `Код` = "ФОР"),
`Ид\ДОП^СПЕЦ` = (SELECT `Ид\СПЕ^СОТ` FROM `Специалист: СОТ` WHERE `Ид\СПЕ^СОТ` = 2),
`Ид\ДОП^РАЗ` = (SELECT `Ид` FROM `Разрешение` WHERE `Регномер` = "123-1");
INSERT INTO `Допуск сотрудника\СОТ` SET
`Ид` = DEFAULT, `НПП` = "2",
`Ид\ДОП^СОТ` = (SELECT `Ид` FROM `Сотрудник%ПЕРС` WHERE `Код` = "001-РУК"),
`Основание для присвоения` = "Направление в другие организации для выполнения работ с
использованием сведений, составляющих тайну", `Основание для снятия` = "Истечение срока действия",
`Ид\ДОП^ПРИК` = (SELECT `Ид` FROM `Приказ` WHERE `Регномер` = "112-2"),
`Ид\ДОП^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ФОР" AND `Код` = "ФОР"),
`Ид\ДОП^СПЕЦ` = (SELECT `Ид\СПЕ^СОТ` FROM `Специалист: СОТ` WHERE `Ид\СПЕ^СОТ` = 2),
`Ид\ДОП^РАЗ` = (SELECT `Ид` FROM `Разрешение` WHERE `Регномер` = "123-2");
SELECT "`Допуск сотрудника\СОТ` Table Content:" FROM `Допуск сотрудника\СОТ` WHERE 1 = 0;
SELECT * FROM `Допуск сотрудника\СОТ`;
DROP TABLE IF EXISTS `Запрос на получение допуска`;
CREATE TABLE `Запрос на получение допуска`
(`Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Регномер` CHAR (10) NOT NULL UNIQUE KEY
, `Дата` CHAR (10) NOT NULL
, `Ид\ЗАПР^СПР` INT NOT NULL
REFERENCES `Справка+` (`Ид`));
INSERT INTO `Запрос на получение допуска` SET
`Ид` = DEFAULT, `Регномер` = "234-1", `Дата` = "12.09.2023",
`Ид\ЗАПР^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ФОР" AND `Код` = "ФОР");
INSERT INTO `Запрос на получение допуска` SET
`Ид` = DEFAULT, `Регномер` = "235-2", `Дата` = "13.12.2023",
`Ид\ЗАПР^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ФОР" AND `Код` = "ФОР");
SELECT "`Запрос на получение допуска` Table Content:" FROM `Запрос на получение допуска` WHERE 1 = 0;
SELECT * FROM `Запрос на получение допуска`;
DROP TABLE IF EXISTS `Документ`;
CREATE TABLE `Документ`
(`Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Регномер` CHAR (10) NOT NULL UNIQUE KEY,
`Название` CHAR (10) NOT NULL,
`Код грифа секретности` CHAR (10) NOT NULL,
`Ид\ДОК^СПР` INT NOT NULL
REFERENCES `Справка+` (`Ид`),
`Ид\ДОК^СПЕЦ` INT NOT NULL
REFERENCES `Специалист: СОТ` (`Ид\СПЕ^СОТ`));
INSERT INTO `Документ` SET
`Ид` = DEFAULT, `Регномер` = "15-12", `Название` = "Документ 1", `Код грифа секретности` = "001",
`Ид\ДОК^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ВИДО" AND `Код` = "ВИДО"),
`Ид\ДОК^СПЕЦ` = (SELECT `Ид\СПЕ^СОТ` FROM `Специалист: СОТ` WHERE `Ид\СПЕ^СОТ` = 3);
INSERT INTO `Документ` SET
`Ид` = DEFAULT, `Регномер` = "15-13", `Название` = "Документ 2", `Код грифа секретности` = "002",
`Ид\ДОК^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ВИДО" AND `Код` = "ВИДО"),
`Ид\ДОК^СПЕЦ` = (SELECT `Ид\СПЕ^СОТ` FROM `Специалист: СОТ` WHERE `Ид\СПЕ^СОТ` = 3);
SELECT "`Документ` Table Content:" FROM `Документ` WHERE 1 = 0;
SELECT * FROM `Документ`;
DROP TABLE IF EXISTS `Сотрудник в запросе: СОТ*ЗАПР`;
CREATE TABLE `Сотрудник в запросе: СОТ*ЗАПР`
(`НПП` CHAR (10) NOT NULL
, `Основание для присвоения` CHAR (150) NOT NULL
, CONSTRAINT `ПК\СОТЗ` PRIMARY KEY (`Ид\СОТЗ^СОТ`, `Ид\СОТЗ^ЗАПР`)
, `Ид\СОТЗ^СОТ` INT NOT NULL
REFERENCES `Сотрудник%ПЕРС` (`Ид`),
`Ид\СОТЗ^ЗАПР` INT NOT NULL
REFERENCES `Запрос на получение допуска` (`Ид`),
`Ид\СОТЗ^РАЗ` INT NOT NULL
REFERENCES `Разрешение` (`Ид`),
`Ид\СОТЗ^СПЕЦ` INT NOT NULL
REFERENCES `Специалист: СОТ` (`Ид\СПЕ^СОТ`),
`Ид\СОТЗ^ПРЕД` INT NOT NULL
REFERENCES `Представитель%ПЕРС` (`Ид`));
INSERT INTO `Сотрудник в запросе: СОТ*ЗАПР` SET
`НПП` = "1", `Основание для присвоения` = "Основание",
`Ид\СОТЗ^СОТ` = (SELECT `Ид` FROM `Сотрудник%ПЕРС` WHERE `Код` = "001-РУК"),
`Ид\СОТЗ^ЗАПР` = (SELECT `Ид` FROM `Запрос на получение допуска` WHERE `Регномер` = "235-2"),
`Ид\СОТЗ^РАЗ` = (SELECT `Ид` FROM `Разрешение` WHERE `Регномер` = "123-1"),
`Ид\СОТЗ^СПЕЦ` = (SELECT `Ид\СПЕ^СОТ` FROM `Специалист: СОТ` WHERE `Ид\СПЕ^СОТ` = 2),
`Ид\СОТЗ^ПРЕД` = (SELECT `Ид` FROM `Представитель%ПЕРС` WHERE `Код` = "001-ПРЕ");
SELECT "`Сотрудник в запросе: СОТ*ЗАПР` Table Content:" FROM `Сотрудник в запросе: СОТ*ЗАПР` WHERE 1 = 0;
SELECT * FROM `Сотрудник в запросе: СОТ*ЗАПР`;
DROP TABLE IF EXISTS `Документ к допуску`;
CREATE TABLE `Документ к допуску`
(`Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Рег. номер` CHAR (10) NOT NULL UNIQUE KEY,
`Дата` CHAR (10) NOT NULL,
`Ид\ДОКД^СПР` INT NOT NULL
REFERENCES `Справка+` (`Ид`),
`Ид\ДОКД^СОТЗ` INT NOT NULL
REFERENCES `Сотрудник в запросе: СОТ*ЗАПР` (`Ид\СОТЗ^СОТ`),
`Ид\ДОКД^ДОП` INT NOT NULL
REFERENCES `Допуск сотрудника\СОТ` (`Ид`));
INSERT INTO `Документ к допуску` SET
`Ид` = DEFAULT, `Рег. номер` = "123", `Дата` = "23.09.2023",
`Ид\ДОКД^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ВИДО" AND `Код` = "ВИДО"),
`Ид\ДОКД^СОТЗ` = (SELECT `Ид\СОТЗ^СОТ` FROM `Сотрудник в запросе: СОТ*ЗАПР` WHERE `Ид\СОТЗ^СОТ` = 1),
`Ид\ДОКД^ДОП` = (SELECT `Ид` FROM `Допуск сотрудника\СОТ` WHERE `Ид` = 1);
SELECT "`Документ к допуску` Table Content:" FROM `Документ к допуску` WHERE 1 = 0;
SELECT * FROM `Документ к допуску`;
DROP TABLE IF EXISTS `Сотрудник с допуском`;
CREATE TABLE `Сотрудник с допуском`
(`Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Рег. номер отчета` CHAR (10) NOT NULL UNIQUE KEY,
`Дата/время составления отчета` CHAR (100) NOT NULL,
`Ид\СОТД^СОТ` INT NOT NULL
REFERENCES `Сотрудник%ПЕРС` (`Ид`),
`Ид\СОТД^РУК` INT NOT NULL
REFERENCES `Руководитель: СОТ` (`Ид\РУК^СОТ`));
INSERT INTO `Сотрудник с допуском` SET
`Ид` = DEFAULT, `Рег. номер отчета` = "46537-2",
`Дата/время составления отчета` = "23.09.2023 14:30",
`Ид\СОТД^СОТ` = (SELECT `Ид` FROM `Сотрудник%ПЕРС` WHERE `Код` = "003-СПЕ"),
`Ид\СОТД^РУК` = (SELECT * FROM `Руководитель: СОТ` WHERE 1);
INSERT INTO `Сотрудник с допуском` SET
`Ид` = DEFAULT, `Рег. номер отчета` = "46542-1",
`Дата/время составления отчета` = "27.12.2023 15:47",
`Ид\СОТД^СОТ` = (SELECT `Ид` FROM `Сотрудник%ПЕРС` WHERE `Код` = "003-СПЕ"),
`Ид\СОТД^РУК` = (SELECT * FROM `Руководитель: СОТ` WHERE 1);
SELECT "`Сотрудник с допуском` Table Content:" FROM `Сотрудник с допуском` WHERE 1 = 0;
SELECT * FROM `Сотрудник с допуском`;
DROP TABLE IF EXISTS `Доступ к документу: СОТД*ДОК`;
CREATE TABLE `Доступ к документу: СОТД*ДОК`
(`Основание для выдачи` CHAR (150) NOT NULL
, `Дата/время выдачи` CHAR (150) NULL
, `Дата/время возврата` CHAR (10) NOT NULL
, CONSTRAINT `ПК\ДОСТ` PRIMARY KEY (`Ид\ДОСТ^СОТД`, `Ид\ДОСТ^ДОК`)
, `Ид\ДОСТ^СОТД` INT NOT NULL
REFERENCES `Сотрудник с допуском` (`Ид`),
`Ид\ДОСТ^ДОК` INT NOT NULL
REFERENCES `Документ` (`Ид`));
INSERT INTO `Доступ к документу: СОТД*ДОК` SET
`Основание для выдачи` = "Основание", `Дата/время выдачи` = "13.09.2023", `Дата/время возврата` = "20.09.2023",
`Ид\ДОСТ^СОТД` = (SELECT `Ид` FROM `Сотрудник с допуском` WHERE `Рег. номер отчета` = "46537-2"),
`Ид\ДОСТ^ДОК` = (SELECT `Ид` FROM `Документ` WHERE `Регномер` = "15-12");
SELECT "`Доступ к документу: СОТД*ДОК` Table Content:" FROM `Доступ к документу: СОТД*ДОК` WHERE 1 = 0;
SELECT * FROM `Доступ к документу: СОТД*ДОК`;
DROP VIEW IF EXISTS `вирт_Сотрудник, имевший допуск`;
CREATE VIEW `вирт_Сотрудник, имевший допуск` AS
SELECT
`СОТ`.`Код` AS `Код сотрудника`,
`СОТ`.`ФИО` AS `ФИО сотрудника`,
`СПР`.`Код` AS `Код должности сотрудника`,
`СПР`.`Название` AS `Название должности сотрудника`,
`СОТ`.`Ид` AS `Ид\Сотрудник`
FROM `Сотрудник%ПЕРС` AS `СОТ`
LEFT JOIN `Справка+` AS `СПР`
ON `СОТ`.`Ид_ДОЛ\СОТ^СПР` = `СПР`.`Ид`
;
SELECT * FROM `вирт_Сотрудник, имевший допуск`;
DROP PROCEDURE IF EXISTS `проц_Допуск сотрудника`;
CREATE PROCEDURE `проц_Допуск сотрудника`
(IN `@Ид\Сотрудник` INT)
SELECT
`ДОП`.`НПП` AS `НПП допуска`,
`СПР`.`Код` AS `Код формы допуска`,
`СПР`.`Название` AS `Название формы допуска`,
`ДОП`.`Основание для присвоения` AS `Основание для присвоения допуска`,
`РАЗ`.`Регномер` AS `Регномер разрешения`,
`РАЗ`.`Дата` AS `Дата разрешения`,
`ПРИК`.`Регномер` AS `Регномер приказа о присвоении`,
`ПРИК`.`Дата` AS `Дата приказа о присвоении`,
`ДОП`.`Основание для снятия` AS `Основание для снятия допуска`,
`СОТ`.`Код` AS `Код руководителя`,
`СОТ`.`ФИО` AS `ФИО руководителя`,
`СПР1`.`Код` AS `Код должности руководителя`,
`СПР1`.`Название` AS `Название должности руководителя`
FROM `Допуск сотрудника\СОТ` AS `ДОП`
LEFT JOIN `Разрешение` AS `РАЗ`
ON `ДОП`.`Ид\ДОП^РАЗ` = `РАЗ`.`Ид`
LEFT JOIN `Приказ` AS `ПРИК`
ON `ДОП`.`Ид\ДОП^ПРИК` = `ПРИК`.`Ид`
LEFT JOIN `Справка+` AS `СПР`
ON `ДОП`.`Ид\ДОП^СПР` = `СПР`.`Ид`
LEFT JOIN `Руководитель: СОТ` AS `РУК`
ON `ПРИК`.`Ид\ПРИК^РУК` = `РУК`.`Ид\РУК^СОТ`
LEFT JOIN `Сотрудник%ПЕРС` AS `СОТ`
ON `РУК`.`Ид\РУК^СОТ` = `СОТ`.`Ид`
LEFT JOIN `Справка+` AS `СПР1`
ON `СОТ`.`Ид_ДОЛ\СОТ^СПР` = `СПР1`.`Ид`
WHERE `ДОП`.`Ид` = `@Ид\Сотрудник`
;
CALL `проц_Допуск сотрудника` (1);
DROP VIEW IF EXISTS `вирт_Сотрудник в запросе%Запрос на получение допуска`;
CREATE VIEW `вирт_Сотрудник в запросе%Запрос на получение допуска` AS
SELECT
`СОТЗ`.`НПП` AS `НПП сотрудника`,
`СОТ`.`Код` AS `Код сотрудника`,
`СОТ`.`ФИО` AS `ФИО сотрудника`,
`СПР2`.`Код` AS `Код должности сотрудника`,
`СПР2`.`Название` AS `Название должности сотрудника`,
`СОТЗ`.`Основание для присвоения` AS `Основание для присвоения допуска`,
`СОТ1`.`Код` AS `Код ходатайствующего о присвоении`,
`СОТ1`.`ФИО` AS `ФИО ходатайствующего о присвоении`,
`СПР1`.`Код` AS `Код должности ходатайствующего`,
`СПР1`.`Название` AS `Название должности ходатайствующего`,
`РАЗ`.`Регномер` AS `Регномер разрешения`,
`РАЗ`.`Дата` AS `Дата разрешения`,
`ПРЕД`.`Код` AS `Код представителя`,
`ПРЕД`.`ФИО` AS `ФИО представителя`,
`ЗАПР`.`Регномер` AS `Регномер запроса`,
`ЗАПР`.`Дата` AS `Дата запроса`,
`СПР`.`Код` AS `Код формы допуска`,
`СПР`.`Название` AS `Название формы допуска`
FROM `Сотрудник в запросе: СОТ*ЗАПР` AS `СОТЗ`
LEFT JOIN `Сотрудник%ПЕРС` AS `СОТ`
ON `СОТЗ`.`Ид\СОТЗ^СОТ` = `СОТ`.`Ид`
LEFT JOIN `Запрос на получение допуска` AS `ЗАПР`
ON `СОТЗ`.`Ид\СОТЗ^ЗАПР` = `ЗАПР`.`Ид`
LEFT JOIN `Разрешение` AS `РАЗ`
ON `СОТЗ`.`Ид\СОТЗ^РАЗ` = `РАЗ`.`Ид`
LEFT JOIN `Специалист: СОТ` AS `СПЕЦ`
ON `СОТЗ`.`Ид\СОТЗ^СПЕЦ` = `СПЕЦ`.`Ид\СПЕ^СОТ`
LEFT JOIN `Представитель%ПЕРС` AS `ПРЕД`
ON `СОТЗ`.`Ид\СОТЗ^ПРЕД` = `ПРЕД`.`Ид`
LEFT JOIN `Справка+` AS `СПР2`
ON `СОТ`.`Ид_ДОЛ\СОТ^СПР` = `СПР2`.`Ид`
LEFT JOIN `Справка+` AS `СПР`
ON `ЗАПР`.`Ид\ЗАПР^СПР` = `СПР`.`Ид`
LEFT JOIN `Сотрудник%ПЕРС` AS `СОТ1`
ON `СПЕЦ`.`Ид\СПЕ^СОТ` = `СОТ1`.`Ид`
LEFT JOIN `Справка+` AS `СПР1`
ON `СОТ`.`Ид_ДОЛ\СОТ^СПР` = `СПР1`.`Ид`
;
SELECT * FROM `вирт_Сотрудник в запросе%Запрос на получение допуска`;
DROP VIEW IF EXISTS `вирт_Сотрудник с допуском_документы`;
CREATE VIEW `вирт_Сотрудник с допуском_документы` AS
WITH
`ЧДО` AS (
SELECT
`ДОСТ`.`Ид\ДОСТ^СОТД` AS `Ид_ДОК`,
COUNT(*) AS `Кол_ДОК`
FROM `Доступ к документу: СОТД*ДОК` AS `ДОСТ`
GROUP BY `Ид\ДОСТ^СОТД`)
SELECT
`СОТД`.`Рег. номер отчета` AS `Рег. номер отчета`,
`СОТД`.`Дата/время составления отчета` AS `Дата/время составления отчета`,
`СОТ`.`Код` AS `Код сотрудника`,
`СОТ`.`ФИО` AS `ФИО сотрудника`,
`СПР2`.`Код` AS `Код должности сотрудника`,
`СПР2`.`Название` AS `Название должности сотрудника`,
`СПР3`.`Код` AS `Код допуска пользователя`,
`СПР3`.`Название` AS `Название допуска пользователя`,
`СОТ1`.`Код` AS `Код руководителя`,
`СОТ1`.`ФИО` AS `ФИО руководителя`,
`СПР1`.`Код` AS `Код должности руководителя`,
`СПР1`.`Название` AS `Название должности руководителя`,
COUNT(*) AS `Число документов`
FROM `Доступ к документу: СОТД*ДОК` AS `ДОСТ`
LEFT JOIN `Сотрудник с допуском` AS `СОТД`
ON `ДОСТ`.`Ид\ДОСТ^СОТД` = `СОТД`.`Ид`
LEFT JOIN `Руководитель: СОТ` AS `РУК`
ON `СОТД`.`Ид\СОТД^РУК` = `РУК`.`Ид\РУК^СОТ`
LEFT JOIN `Сотрудник%ПЕРС` AS `СОТ1`
ON `РУК`.`Ид\РУК^СОТ` = `СОТ1`.`Ид`
LEFT JOIN `Справка+` AS `СПР1`
ON `СОТ1`.`Ид_ДОЛ\СОТ^СПР` = `СПР1`.`Ид`
LEFT JOIN `Сотрудник%ПЕРС` AS `СОТ`
ON `СОТД`.`Ид\СОТД^СОТ` = `СОТ`.`Ид`
LEFT JOIN `Справка+` AS `СПР2`
ON `СОТ`.`Ид_ДОЛ\СОТ^СПР` = `СПР2`.`Ид`
LEFT JOIN `Справка+` AS `СПР3`
ON `СОТ`.`Ид_ДОП\СОТ^СПР` = `СПР3`.`Ид`
GROUP BY `ДОСТ`.`Ид\ДОСТ^СОТД`
;
SELECT * FROM `вирт_Сотрудник с допуском_документы`;
DROP VIEW IF EXISTS `вирт_Сотрудник с допуском_секретные документы`;
CREATE VIEW `вирт_Сотрудник с допуском_секретные документы` AS
WITH
`ЧСДО` AS (
SELECT
`ДОСТ`.`Ид\ДОСТ^СОТД` AS `Ид_ДОК`,
COUNT(*) AS `Кол_ДОК`
FROM `Доступ к документу: СОТД*ДОК` AS `ДОСТ`
GROUP BY `Ид\ДОСТ^СОТД`)
SELECT
`СОТД`.`Рег. номер отчета` AS `Рег. номер отчета`,
`СОТД`.`Дата/время составления отчета` AS `Дата/время составления отчета`,
`СОТ`.`Код` AS `Код сотрудника`,
`СОТ`.`ФИО` AS `ФИО сотрудника`,
`СПР2`.`Код` AS `Код должности сотрудника`,
`СПР2`.`Название` AS `Название должности сотрудника`,
`СПР3`.`Код` AS `Код допуска пользователя`,
`СПР3`.`Название` AS `Название допуска пользователя`,
`СОТ1`.`Код` AS `Код руководителя`,
`СОТ1`.`ФИО` AS `ФИО руководителя`,
`СПР1`.`Код` AS `Код должности руководителя`,
`СПР1`.`Название` AS `Название должности руководителя`,
COUNT(*) AS `Число секретных документов`
FROM `Доступ к документу: СОТД*ДОК` AS `ДОСТ`
LEFT JOIN `Сотрудник с допуском` AS `СОТД`
ON `ДОСТ`.`Ид\ДОСТ^СОТД` = `СОТД`.`Ид`
LEFT JOIN `Руководитель: СОТ` AS `РУК`
ON `СОТД`.`Ид\СОТД^РУК` = `РУК`.`Ид\РУК^СОТ`
LEFT JOIN `Сотрудник%ПЕРС` AS `СОТ1`
ON `РУК`.`Ид\РУК^СОТ` = `СОТ1`.`Ид`
LEFT JOIN `Справка+` AS `СПР1`
ON `СОТ1`.`Ид_ДОЛ\СОТ^СПР` = `СПР1`.`Ид`
LEFT JOIN `Сотрудник%ПЕРС` AS `СОТ`
ON `СОТД`.`Ид\СОТД^СОТ` = `СОТ`.`Ид`
LEFT JOIN `Справка+` AS `СПР2`
ON `СОТ`.`Ид_ДОЛ\СОТ^СПР` = `СПР2`.`Ид`
LEFT JOIN `Справка+` AS `СПР3`
ON `СОТ`.`Ид_ДОП\СОТ^СПР` = `СПР3`.`Ид`
GROUP BY `ДОСТ`.`Ид\ДОСТ^СОТД`
;
SELECT * FROM `вирт_Сотрудник с допуском_секретные документы`;