У меня есть таблица с именем Entity
, которая содержит только ID int
в качестве первичного ключа. У меня также есть ряд таблиц задач (Task1, Task2, Task3,
...). Эти таблицы задач имеют ряд отдельных столбцов, но имеют три общих столбца:
- столбец
time_created datetime2(7)
со значением по умолчанию getdate()
- свой собственный
ID int
PK - внешний ключ
ID_Entity
(который, конечно, является PK таблицы сущностей).
CREATE TABLE [dbo].[Task1]
(
[ID_Task1] [int] IDENTITY(1,1) NOT NULL,
[describer] [nvarchar](30) NOT NULL,
[ID_Entity] [int] NOT NULL,
[timestamp] [datetime2](7) NOT NULL,
[individual_task_value] [float] NOT NULL,
CONSTRAINT [PK_Task1]
PRIMARY KEY CLUSTERED ([ID_Task1] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Task1]
ADD CONSTRAINT [DF_Task1_timestamp] DEFAULT (GETDATE()) FOR [timestamp]
GO
ALTER TABLE [dbo].[Task1] WITH CHECK
ADD CONSTRAINT [FK_Task1_Entity]
FOREIGN KEY([ID_Entity]) REFERENCES [dbo].[Entity] ([id])
GO
ALTER TABLE [dbo].[Task1] CHECK CONSTRAINT [FK_Task1_Entity]
GO
Таким образом, в основном одна сущность может иметь несколько задач разных типов.
Можно ли создать один запрос, который объединит все эти таблицы и, таким образом, даст мне для одной сущности свои разные задачи (упорядоченные по дате)?
Скажите, я запрашиваю свою сущность с идентификатором из 1 и получите список всех назначенных ему задач:
+-----------+------------------+-------+---------+
| ID_ENTITY | DATETIME | TASK | TASK_ID |
+-----------+------------------+-------+---------+
| 1 | 2020.03.01 17:30 | task1 | 1 |
| 1 | 2020.03.01 17:40 | task2 | 1 |
| 1 | 2020.03.02 06:30 | task1 | 2 |
| 1 | 2020.03.02 06:31 | task3 | 1 |
| 1 | 2020.03.02 06:32 | task2 | 2 |
| 1 | 2020.03.02 08:32 | task2 | 3 |
+-----------+------------------+-------+---------+
(столбец ID_ENTITY
здесь не имеет смысла и только для демонстрации)