У меня есть база данных, в которой хранятся сведения о представленных документах в модуле заявления на пенсию (показаны только соответствующие поля).Я пытаюсь создать представление, в котором я получаю личную информацию сотрудника вместе с таблицей логических значений, представляющих текущее состояние документов.У меня есть четыре таблицы:
1- Таблица для «основных записей», служит отправной точкой для клиентского приложения
CREATE TABLE tbRegistro (
ID int IDENTITY(0,1) PRIMARY KEY,
ID_ANAGRAFICA int NOT NULL,
ID_DOCUMENTAZIONE int,
ID_COMUNICAZIONI int,
UTENTE nvarchar(15) NOT NULL,
DATA_CREAZIONE datetime NOT NULL,
LOCK bit
);
Пример данных:
ID ID_ANAGRAFICA ID_DOCUMENTAZIONE ID_COMUNICAZIONI
----------- ------------- ----------------- ----------------
0 1 1 0
1 3 3 1
2 5 5 2
3 7 7 3
2- Таблица «Персональные данные» увольняющихся сотрудников
CREATE TABLE tbAnagrafica (
ID int IDENTITY(0,1) PRIMARY KEY,
MATRICOLA nvarchar(7) NOT NULL,
COGNOME nvarchar(50) NOT NULL,
NOME nvarchar(50) NOT NULL,
COD_ENTE char(5) NOT NULL,
NOME_ENTE nvarchar(150) NOT NULL,
UTENTE nvarchar(15) NOT NULL,
DATA_CREAZIONE datetime NOT NULL
);
Пример данных:
ID MATRICOLA COGNOME NOME
----------- --------- ----------------- ----------------
1 DRTVDR SKYWALKER ANAKIN
3 EMPR0R PALPATINE SHEEV
5 NRFHRD SOLO HAN
7 SCARRD SOLO BEN
3- Таблица, содержащая сведения о каждом отдельном документе, представленномушедший в отставку aployee
CREATE TABLE tbDettaglioDoc(
ID int IDENTITY(0,1) PRIMARY KEY,
PROT_NUM int NOT NULL,
PROT_DATA datetime NOT NULL,
PRESENTE bit NOT NULL,
INCOMPLETO bit NOT NULL,
DISABILITATO bit NOT NULL,
NOTE nvarchar(255),
ID_TIPODOCUMENTO int NOT NULL,
UTENTE nvarchar(15) NOT NULL,
DATA_CREAZIONE datetime NOT NULL
);
Пример данных:
ID PROT_NUM PROT_DATA PRESENTE INCOMPLETO DISABILITATO ID_TIPODOCUMENTO
----------- ----------- ----------------------- -------- ---------- ------------ ----------------
6 84528 2018-05-07 00:00:00.000 1 0 0 0
7 84528 2018-05-07 00:00:00.000 1 0 0 3
8 84528 2018-05-07 00:00:00.000 1 0 0 5
11 84528 2018-05-07 00:00:00.000 1 0 0 9
12 238785 2018-05-07 00:00:00.000 1 0 0 0
13 238785 2018-05-07 00:00:00.000 1 0 0 3
14 238785 2018-05-07 00:00:00.000 1 1 0 5
25 51132 2018-05-07 00:00:00.000 1 0 0 4
26 51132 2018-05-07 00:00:00.000 1 0 0 5
28 51132 2018-05-07 00:00:00.000 1 0 0 9
29 84350 2018-05-07 00:00:00.000 1 0 0 0
30 84350 2018-05-07 00:00:00.000 1 1 0 3
4- Таблица, содержащая идентификаторы всех документов для приложения в целом, сохраняя значение NULL, когда этот конкретный документ ещеотсутствует (только общие имена, показанные здесь):
CREATE TABLE tbDocumentazione(
ID int IDENTITY(0,1) PRIMARY KEY,
ID_ISTANZA int,
ID_ATTIDISP int,
ID_CEDOLINO int,
ID_DATISENS int,
ID_NULLAOSTA int,
ID_INESDEBITI int,
ID_DUM int,
ID_MOD27 int,
ID_CODFISC int,
ID_DOCIDENTITA int,
ID_CERTMORTE int,
ID_ATTONOTORIO int,
UTENTE nvarchar(15) NOT NULL,
DATA_CREAZIONE datetime NOT NULL
);
Пример данных:
ID ID_ISTANZA ID_ATTIDISP ID_CEDOLINO ID_DATISENS ID_NULLAOSTA ID_INESDEBITI ID_DUM ID_MOD27 ID_CODFISC ID_DOCIDENTITA ID_CERTMORTE ID_ATTONOTORIO
----------- ----------- ----------- ----------- ----------- ------------ ------------- ----------- ----------- ----------- -------------- ------------ --------------
1 6 NULL NULL 7 NULL 8 NULL 9 10 11 NULL NULL
3 12 NULL NULL 13 NULL 14 NULL NULL 15 16 NULL NULL
5 23 NULL NULL 24 25 26 NULL NULL 27 28 NULL NULL
7 29 NULL NULL 30 NULL 31 NULL 32 33 34 NULL NULL
8 38 NULL NULL 35 NULL 36 NULL NULL 39 37 NULL NULL
9 40 NULL NULL 41 NULL 42 NULL 43 44 45 NULL NULL
Я ожидал, что он выдаст что-то вроде этого (предупреждение для ботаников!)
ID COGNOME NOME MATRICOLA ISTANZA ATTI_DISP CEDOLINO
+----+------------+-----------+-----------+---------+-----------+----------
1 SKYWALKER ANAKIN DRTVDR 1 0 1
2 PALPATINE SHEEV EMPROR 1 1 0
3 SOLO HAN NRFHRD 0 1 1
...and so on
где "0 = отображается, когда документ не был отправлен или является неполным, но я довольно плохо знаком с T-SQL, и каждый запрос, который я пытаюсь выполнить, терпит неудачу. Так что я немного застрял. Любая помощь ДЕЙСТВИТЕЛЬНОпризнателен.
Заранее спасибо. Давиде.