Создайте представление Parent-Child из нескольких таблиц - PullRequest
0 голосов
/ 04 августа 2020

У меня есть следующие таблицы:

CREATE TABLE Equipment (Id int,Name varchar(20),SubAreaId int);

INSERT INTO Equipment (Id, Name ,SubAreaId)
VALUES  (1, 'EquipmentA',1),
        (2, 'EquipmentB',1),
        (3, 'EquipmentC',2),
        (4, 'EquipmentD',2);

CREATE TABLE SubArea (Id int,Name varchar(20),AreaId int);

INSERT INTO SubArea (Id,Name,AreaId)
VALUES  (1, 'SubAreaA',1),
        (2, 'SubAreaB',2),
        (3, 'SubAreaC',2);
        
CREATE TABLE Area (Id int,Name varchar(20),SiteId int);

INSERT INTO Area (Id,Name,SiteId)
VALUES  (1, 'AreaA',1),
        (2, 'AreaB',1),     
        (3, 'AreaC',1);        
        
CREATE TABLE Site (Id int,Name varchar(20));
INSERT INTO Site (Id,Name)
VALUES  (1, 'Site');

Хотелось бы получить представление, которое отображает:

enter image description here

Link to SQl Fiddle where I created schema: http://www.sqlfiddle.com/#! 18 / 53d1ce / 2

Редактировать: Добавлена ​​область C и SubArea C, которые не должны отображаться в представлении, поскольку они не подключены к какому-либо оборудованию

1 Ответ

0 голосов
/ 04 августа 2020

Это union all:

select s.name, a.name
from area a join
     site s
     on a.siteid = s.id
union all
select a.name, sa.name
from subarea sa join
     area s
     on sa.areaid = a.id
union all
select sa.name, e.name
from equipment e join
     subarea sa
     on sa.subareaid = sa.id;
...