Как я могу получить значения отношений родитель-потомок в новую таблицу, когда родительский и дочерний элементы хранятся в одной таблице

sql #sql-server

#sql #sql-сервер

Вопрос:

У меня есть таблица SQL Server со структурой, как показано здесь:

Родительский Дочерний элемент
1 2
2 3
3 4
4 5

Я хочу отобразить детали, подобные этой таблице

Родительский Дочерний элемент1 Дочерний элемент2 Дочерний элемент 3 Дочерний элемент 4
1 2 3 4 5
2 3 4 5 5
3 4 5 5 5

Как я могу создать свой SQL-запрос? Это легко, когда я получаю parent и child1, но это сложно с дочерним элементом 2

Когда я пытаюсь использовать:

 INSERT INTO TABLE2 (CHILD2)
    SELECT CHILD 
    FROM TABLE1, TABLE2
    WHERE TABLE1.PARENT = TABLE2.CHILD1
 

У меня есть большая база данных для выполнения этого упражнения, ее около 225 000 объектов, после чего этот скрипт застрял при выполнении запроса. Извините за мой плохой английский, нужна быстрая помощь. Спасибо всем за прочтение моего вопроса.

Комментарии:

1. Вредные привычки: использование объединений старого стиля — этот стиль списка таблиц, разделенных запятыми , в старом стиле был заменен на правильный JOIN синтаксис ANSI в стандарте ANSI- 92 SQL ( почти 30 лет назад), и его использование не рекомендуется

2. Как выглядит TABLE2? Сколько там столбцов? Есть ли у каких-либо отношений дочерний элемент 5, дочерний элемент 6 и т. Д.?

Ответ №1:

Вы можете использовать одну LEFT JOIN и ту же таблицу снова и снова

 SELECT
  t1.Parent,
  Child1 = t1.Child,
  Child2 = t2.Child,
  Child3 = t3.Child,
  Child4 = t4.Child
FROM YourTable t1
LEFT JOIN YourTable t2 ON t2.PARENT = t1.CHILD
LEFT JOIN YourTable t3 ON t3.PARENT = t2.CHILD
LEFT JOIN YourTable t4 ON t4.PARENT = t3.CHILD;