Добавил:
support-vk-server-knmcadiknmcadibav.ru Сайт моих друзей из VKT NDA : https://support-vk-server-knmcadiknmcadibav.ru/about/rnila_iv_id566844132@dnevnik.rurnVK Testers NDA (тестировщик) QA. Студент 4 курса.rn+79009627198rnhttps://vk.cc/helprn#HLKLesNarod# Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
05.07.2025
Размер:
3 Кб
Скачать
-- Переключение на базу NameDataB и создание схемы
USE master;
GO

IF DB_ID('NameDataB') IS NULL CREATE DATABASE NameDataB;
IF DB_ID('NameDB1') IS NULL CREATE DATABASE NameDB1;
GO

USE NameDataB;
GO

IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'БобровскийЛес')
    EXEC('CREATE SCHEMA БобровскийЛес');
GO

-- Создание таблицы Клиенты
IF OBJECT_ID('БобровскийЛес.Клиенты') IS NULL
BEGIN
    CREATE TABLE БобровскийЛес.Клиенты (
        ID INT PRIMARY KEY IDENTITY,
        ФИО NVARCHAR(100),
        Телефон NVARCHAR(20),
        Email NVARCHAR(100),
        Город NVARCHAR(50),
        ДатаРегистрации DATE,
        ПоследняяПокупка DATE,
        Статус NVARCHAR(20)
    );
END
GO

-- Создание таблицы ИсторияКлиентов
IF OBJECT_ID('БобровскийЛес.ИсторияКлиентов') IS NULL
BEGIN
    CREATE TABLE БобровскийЛес.ИсторияКлиентов (
        ID INT PRIMARY KEY IDENTITY,
        КлиентID INT FOREIGN KEY REFERENCES БобровскийЛес.Клиенты(ID),
        ДатаОбращения DATETIME DEFAULT GETDATE(),
        Комментарий NVARCHAR(MAX)
    );
END
GO

-- Переход в базу NameDB1 и создание схемы и таблицы Продажи
USE NameDB1;
GO

IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'БобровскийЛес')
    EXEC('CREATE SCHEMA БобровскийЛес');
GO

IF OBJECT_ID('БобровскийЛес.Продажи') IS NULL
BEGIN
    CREATE TABLE БобровскийЛес.Продажи (
        ID INT PRIMARY KEY IDENTITY,
        КлиентID INT,
        ДатаПродажи DATE,
        Сумма MONEY
        -- FOREIGN KEY пропущен, так как нельзя ссылаться напрямую на другую базу
    );
END
GO

-- Добавление тестовых клиентов
USE NameDataB;
GO

INSERT INTO БобровскийЛес.Клиенты (ФИО, Телефон, Email, Город, ДатаРегистрации, ПоследняяПокупка, Статус)
VALUES 
(N'Иванов Сергей', N'89001234567', N'sergey@example.com', N'Казань', GETDATE()-10, GETDATE()-5, NULL),
(N'Петрова Анна', N'89112223344', N'anna@example.com', N'Москва', GETDATE()-180, GETDATE()-100, NULL),
(N'Сидоров Максим', N'89225557766', N'max@example.com', N'Тула', GETDATE()-400, GETDATE()-300, NULL);

-- Автоматическая установка статуса
UPDATE БобровскийЛес.Клиенты
SET Статус = CASE 
    WHEN ПоследняяПокупка >= GETDATE()-30 THEN 'Активный'
    WHEN ПоследняяПокупка >= GETDATE()-180 THEN 'Потенциальный'
    ELSE 'Ушёл'
END;
GO

-- История взаимодействий
INSERT INTO БобровскийЛес.ИсторияКлиентов (КлиентID, Комментарий)
SELECT ID, N'Тестовое взаимодействие. Первый контакт.'
FROM БобровскийЛес.Клиенты;
GO

-- Добавление тестовых продаж
USE NameDB1;
GO

INSERT INTO БобровскийЛес.Продажи (КлиентID, ДатаПродажи, Сумма)
VALUES 
(1, GETDATE()-5, 15000),
(2, GETDATE()-100, 20000),
(3, GETDATE()-300, 5000);
GO

-- Генерация XML-отчёта
USE NameDataB;
GO

DECLARE @XMLReport XML;

SET @XMLReport = (
    SELECT 
        (SELECT COUNT(*) FROM БобровскийЛес.Клиенты) AS Клиентов,
        (SELECT COUNT(*) FROM БобровскийЛес.ИсторияКлиентов) AS Истории,
        (SELECT COUNT(*) FROM NameDB1.БобровскийЛес.Продажи) AS Продаж
    FOR XML PATH('Статистика'), ROOT('Отчёт')
);

-- Вывод XML-отчёта
PRINT '-------- XML-ОТЧЁТ О СОЗДАНИИ --------';
SELECT @XMLReport;