В моей базе данных у меня в основном таблица (объект для Doctrine
) называется человек, и это выглядит следующим образом:Список всех элементов рекурсивно через PostgreSQL
class Person
{
private $id;
/**
* @ORM\ManyToOne(targetEntity="Person")
*/
private $parent;
}
Я хотел бы построить МЕТОД getAllChildren
, который возвращает все лица до person1
и рекурсивно все лица под лицами, у которых есть дети.
Я хотел бы знать, могу ли я сделать это через один рекурсивный запрос SQL
.
Update1
Postgres версия: 9,1
-- Table: person
-- DROP TABLE person;
CREATE TABLE person
(
id serial NOT NULL,
parent_id integer,
nom character varying(255) DEFAULT NULL::character varying,
prenom character varying(255) DEFAULT NULL::character varying,
age integer,
description text,
statut character varying(255) DEFAULT NULL::character varying,
CONSTRAINT person_pkey PRIMARY KEY (id),
CONSTRAINT fk_7cbkzkd63HRzVK8e FOREIGN KEY (parent_id)
REFERENCES person(id) MATCH SIMPLE
)
UPDATE2
Я нашел http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/, это довольно много, что мне нужно кроме моя модель безгранична
Да, вы можете. Но если вы хотите получить ответ SQL, укажите данные SQL: определение таблицы, по крайней мере, и, желательно, некоторые образцы данных и версию PG. – Patrick
@Patrick, пожалуйста, ознакомьтесь с моим обновленным сообщением – smarber
Ваш DDL является неполным: 'CONSTRAINT fk_7cbkzkd63HRzVK8e FOREIGN KEY (parent_id) ССЫЛКИ person (id)' – joop