Как сделать запрос, чтобы показать результат одного рекурсивного запроса? - PullRequest
0 голосов
/ 27 апреля 2019

У меня есть структура таблицы под названием человек, у человека есть: идентификатор, имя, фамилия, имя матери, идентификатор отца, идентификатор отца Я хочу построить простой запрос, который показывает данные человека как это: идентификатор, имя, фамилия, имя отца, имя_папки, имя_папки_

CREATE TABLE PERSON
(
ID varchar(20),
FIRST_NAME varchar(20),
LAST_NAME varchar(20),
PHONE_NUMBER varchar(20),
BIRTH_DATE DATE,
FATHER_ID varchar(20),
MOTHER_ID varchar(20),
PRIMARY KEY (ID),
FOREIGN KEY (FATHER_ID) REFERENCES PERSON(ID),
FOREIGN KEY (MOTHER_ID) REFERENCES PERSON(ID)
);



1 Ответ

0 голосов
/ 27 апреля 2019

Вы можете запросить эту информацию, просто присоединив таблицу к себе и используя псевдоним таблицы.Рекурсия не требуется, если иерархия, по которой вы перемещаетесь, не имеет разной глубины.Для этого вопроса есть фиксированная глубина, и вы просто хотите увидеть отношения родитель-потомок между двумя записями.LEFT JOIN гарантирует, что даже если у вас нет обоих родителей в вашей базе данных, запись все равно будет отображаться для этого человека.

SELECT 
    P.ID
    , P.FIRST_NAME
    , P.LAST_NAME
    , F.FIRST_NAME FATHER_FIRST_NAME
    , M.FIRST_NAME MOTHER_FIRST_NAME
FROM 
    PERSON P
LEFT JOIN 
    PERSON F ON (P.FATHER_ID = F.ID)
LEFT JOIN
    PERSON M ON (P.MOTHER_ID = M.ID)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...