J'ai une table dans hsqldb et des valeurs comme celle-ci p>
Comment écrire une requête qui s'affiche comme celle-ci p>
3 Réponses :
Vous allez ici:
create table t (id int, name varchar(10), parent int); insert into t (id, name, parent) values (0, 'A', null), (1, 'A1', 0), (2, 'B', null), (3, 'B1', 2), (4, 'C', null), (5, 'C1', 4), (6, 'A2', 1), (7, 'A3', 1), (8, 'A4', 7), (9, 'B3', 3);
Vous pouvez utiliser une requête récursive: La requête sélectionne la table entière, puis grimpe l'arborescence de la hiérarchie de chaque rangée. L'avantage de cette approche est que cela gérerait correctement un arbre "cassé" (comme un enfant avec un parent non valide, par exemple). P> P>
Une alternative, une requête plus simple basée sur la réponse acceptée. Nous ne commencons qu'avec les racines (rangées avec des parents nuls) et chaque fois que l'Union est effectuée, seules quelques lignes sont ajoutées. Comme la réponse indique, ce type de requête ne sélectionnera pas les lignes enfants avec ID parent non valide:
alter table t add constraint pk primary key(id) alter table t add constraint fk foreign key (parent) references t(id)
S'il vous plaît montrez-nous ce que vous avez essayé jusqu'à présent
J'ai essayé (récursif, rejoindre, ....) Méthodes et n'a aucun résultat. J'ai créé ce résultat manuellement!