Requête Postgresql pour obtenir une relation parent-enfant de niveau n stockée dans une seule table
J'ai un tableau indiquant les relations parent-enfant. Les relations peuvent aller n-niveau profond.
J'ai créé un exemple de tableau à l'aide de la requête suivante:
CREATE SEQUENCE relations_rel_id_seq
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
CREATE TABLE relations(
rel_id bigint DEFAULT nextval('relations_rel_id_seq'::regclass) NOT NULL PRIMARY KEY,
rel_name text,
rel_display text,
rel_parent bigint
);
J'ai besoin d'interroger la table et afficher les relations parent-enfant de façon hiérarchique. Je ne suis pas encore avoir une idée quant à la façon de la requête n-niveau profond à l'aide de requêtes sql.
Pour la sqlfiddle par exemple, l'espérance de la hiérarchie de sortie:
rel1
rel11
rel111
rel112
rel1121
rel2
rel21
rel211
rel212
N. B: La valeur de n, dans n-level
est inconnue.
DB Design:
Est-il une meilleure manière d'une telle relation peut être exprimée dans le
base de données pour faciliter l'interrogation.?
source d'informationauteur saji89
Vous devez vous connecter pour publier un commentaire.
Avec Postgres, vous pouvez utiliser une expression de table commune récursive:
SQLFiddle basé sur votre exemple: http://sqlfiddle.com/#!11/59319/19
(J'ai remplacé les espaces pour l'indentation avec des traits de soulignement comme SQLFiddle n'affiche pas les espaces correctement)