Цикл вращения матрицы (sql)

У меня есть родительская / дочерняя матрица

Parent_col_ID  Child_col_ID
    1                2
    2                3
    3                4
    3                5

Мне нужно изменить его на

Main_Parent Child1 Child2 Child3
  1            2     3      4
  1            2     3      5

Как я могу сделать это в sql?

Какой продукт СУБД вы используете? «SQL» - это просто язык запросов, а не имя конкретного продукта базы данных. Добавьте тег для продукта базы данных, который вы используете postgresql, oracle, sql-server, db2, ...

a_horse_with_no_name 29.11.2018 12:09

Что делать, если у вас 10 детей на одного «главного родителя» и только 3 ребенка на другого? Есть ли у вас верхний предел количества детей?

a_horse_with_no_name 29.11.2018 12:10
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
2
29
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать LEFT JOIN и NOT EXISTS(). Вот ваш запрос:

--DROP TABLE CollEgues
--GO
CREATE TABLE CollEgues
(
     Parent_col_ID  int
     ,Child_col_ID  int
);

INSERT INTO CollEgues VALUES(1,2),(2,3),(3,4),(3,5);

SELECT   Main.Parent_col_ID     AS Main_Parent   
        ,Main.Child_col_ID      AS Child1
        ,Child1.Child_col_ID    AS Child2
        ,Child2.Child_col_ID    AS Child3
FROM CollEgues AS Main
    LEFT JOIN  CollEgues AS Child1 ON Main.Child_col_ID = Child1.Parent_col_ID
    LEFT JOIN  CollEgues AS Child2 ON Child1.Child_col_ID = Child2.Parent_col_ID
    WHERE NOT EXISTS (SELECT 1 FROM CollEgues C WHERE Main.Parent_col_ID=C.Child_col_ID);

Другие вопросы по теме