Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Перенос данных нескольких таблиц в одну с иерархией / 2 сообщений из 2, страница 1 из 1
25.01.2020, 18:06
    #39918712
NikProg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос данных нескольких таблиц в одну с иерархией
Здравствуйте!

Подскажите, пожалуйста, как осуществить перенос данных из нескольких таблиц в одну, при этом результирующая таблица должна сохранить иерархию.
Поле name объединяю с помощью SELECT...UNION ALL.... Но никак не могу понять как мне привязать id правильно.
Пример на картинке.
...
Рейтинг: 0 / 0
25.01.2020, 22:17
    #39918728
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос данных нескольких таблиц в одну с иерархией
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
create table dbo.General (id int primary key, parent_id int null, name varchar(50));
create table dbo.Company (id int primary key, name varchar(50));
create table dbo.SparePart (id int primary key, name varchar(50), company_id int);
create table dbo.Model (id int primary key, name varchar(50), sparePart_id int);

insert into dbo.Company values (1, 'Apple'), (2, 'Siemens'), (3, 'Nokia');
insert into dbo.SparePart values (1, 'display', 2), (2, 'battery', 2), (3, 'display', 1), (4, 'microphone', 3);
insert into dbo.Model values (1, 'aaaa', 1), (2, 'bbbb', 2), (3, 'cccc', 2), (4, 'dddd', 3);
go

declare @t table (id int identity primary key, name varchar(50), table_id int, table_key int, table_parent_key int);

insert into @t
 (name, table_id, table_key, table_parent_key)
 select name, 1, id, null from dbo.Company;

insert into @t
 (name, table_id, table_key, table_parent_key)
 select name, 2, id, company_id from dbo.SparePart;

insert into @t
 (name, table_id, table_key, table_parent_key)
 select name, 3, id, sparePart_id from dbo.Model;

insert into dbo.General
 (id, parent_id, name)
 select
  a.id, b.id, a.name
 from
  @t a left join
  @t b on b.table_id = a.table_id - 1 and b.table_key = a.table_parent_key;

select * from dbo.General;
go

drop table dbo.General, dbo.Company, dbo.SparePart, dbo.Model;
go
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Перенос данных нескольких таблиц в одну с иерархией / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]