Есть таблица в которой лежат ФИО-дата рождения людей:
CREATE TABLE PEOPLES
(
[ID] INTEGER NOT NULL,
[FIO] NVARCHAR(160) NULL,
[BIRTHDAY] DATETIME NULL,
CONSTRAINT [PK_Peoples] PRIMARY KEY ([ID])
)
Ее тестовое наполнение:
INSERT INTO PEOPLES (ID,FIO,BIRTHDAY) VALUES
(1,'Фёдоров Бенедикт Лукьевич','1980-01-01'),
(2,'Кириллов Май Дмитрьевич','1970-01-01'),
(3,'Колесников Борис Игнатьевич','2000-01-01'),
(4,'Королёв Ярослав Демьянович','2010-01-01'),
(5,'Алексеева Инесса Мартыновна','1970-01-01'),
(6,'Сидорова Изабелла Дамировна','2000-01-01'),
(7,'Беляева Лея Васильевна','2010-01-01'),
(8,'Стрелкова Магдалина Лаврентьевна','2020-01-01')
Так же имеется таблица с ролями этих людей в родственных связях (муж, жена, сын, дочь и т.д.)
CREATE TABLE SPR_ROLE
(
[ID] INTEGER NOT NULL,
[ROLE_CODE] NVARCHAR(160) NULL,
CONSTRAINT [PK_SprRole] PRIMARY KEY ([ID])
)
Ее наполнение:
INSERT INTO SPR_ROLE (ID,ROLE_CODE) VALUES
(1,'Муж'),
(2,'Жена'),
(3,'Сын'),
(4,'Дочь')
И есть таблица, в которой указано кто кому кем приходится:
CREATE TABLE PEOPLE_LINKS
(
[ID] INTEGER NOT NULL,
[A_ID1] INTEGER NULL,
[A_ID2] INTEGER NULL,
[A_ROLE] INTEGER NULL,
CONSTRAINT [PK_PeopleLinks] PRIMARY KEY ([ID]),
FOREIGN KEY ([A_ID1]) REFERENCES [PEOPLES] ([ID]),
FOREIGN KEY ([A_ID2]) REFERENCES [PEOPLES] ([ID]),
FOREIGN KEY ([A_ROLE]) REFERENCES [SPR_ROLE] ([ID])
)
И ее наполнение:
INSERT INTO PEOPLE_LINKS (ID,A_ID1,A_ID2,A_ROLE) VALUES
(1,1,5,2),
(2,5,1,1),
(3,5,4,3),
(4,5,7,4),
(5,1,4,3),
(6,2,6,4)
Если читать ее напрямую получается что, у человека с ID=1 жена это человек с ID=5 и так далее.
Вопрос в том, чтобы разделить всю таблицу PEOPLE_LINKS на группы (семьи), и посчитать в каждой семье количество несовершеннолетних. Логично, что нужно заводить сущность "семья" вида:
CREATE TABLE FAMILYS
(
[ID] INTEGER NOT NULL,
[MEMBER_ID] INTEGER NULL,
[FAMILY_ID] INTEGER NULL,
CONSTRAINT [PK_Familys] PRIMARY KEY ([ID]),
FOREIGN KEY ([MEMBER_ID]) REFERENCES [PEOPLES] ([ID])
)
Но я не понимаю как ее заполнить на основании таблицы PEOPLE_LINKS