Interrogation relations parents-enfants Efficacement
-
19-09-2019 - |
Question
En supposant que vous avez la table de base de données suivante:
create table Names (
Id INT IDENTITY NOT NULL,
Name NVARCHAR(100) not null,
ParentNameId INT null,
primary key (Id)
)
create index IX_Name on Names (Name)
alter table Names
add constraint FK_NameNames
foreign key (ParentNameId)
references Names
Cela permet la définition des noms hiérarchiques. Chaque nom peut avoir un nom de parent, et un certain nombre de noms d'enfants.
Je souhaite trouver l'enregistrement correspondant à un nom qualifié comme « a: b: c », où chaque nom côlons délimitent. Je l'ai fait actuellement avec des jointures:
select
Id
from
Names names0
inner join Names names1 on names0.ParentNameId = names1.Id
inner join Names names2 on names1.ParentNameId = names2.Id
where
names0.Name = 'a' and
names1.Name = 'b' and
names2.Name = 'c' and
names0.ParentNameId is null
Ce que je me demande est de savoir s'il y a une façon de faire qui n'implique pas plus efficace dénormalisation des données ou de prendre une dépendance difficile sur un SGBD particulier.
Merci
La solution
Vous pouvez vous lire ceci: http://www.developersdex.com/ gourous / articles / 112.asp
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow