powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Перенос данных нескольких таблиц в одну с иерархией
2 сообщений из 2, страница 1 из 1
Перенос данных нескольких таблиц в одну с иерархией
    #39918712
NikProg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Подскажите, пожалуйста, как осуществить перенос данных из нескольких таблиц в одну, при этом результирующая таблица должна сохранить иерархию.
Поле name объединяю с помощью SELECT...UNION ALL.... Но никак не могу понять как мне привязать id правильно.
Пример на картинке.
...
Рейтинг: 0 / 0
Перенос данных нескольких таблиц в одну с иерархией
    #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
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Перенос данных нескольких таблиц в одну с иерархией
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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