Abfragt Eltern-Kind-Beziehungen Effizientes
-
19-09-2019 - |
Frage
Angenommen, Sie die folgende Datenbanktabelle haben:
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
Dies erlaubt die Definition von hierarchischen Namen. Jeder Name kann einen Elternteil Namen hat, und eine beliebige Anzahl von Kindernamen.
Ich wünsche den Datensatz zu finden, um einen qualifizierten Namen entspricht, wie „a: b: c“, wobei Doppelpunkte jeden Namen begrenzen. Ich habe zur Zeit getan, so Joins:
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
Was ich frage mich, ob es ein effizienter Weg, dies zu tun, die nicht Denormalisierung der Daten beinhalten nicht oder eine harte Abhängigkeit von irgendwelchen besonderen DBMS nehmen.
Danke
Lösung
Sie könnte wie folgt zu lesen: http://www.developersdex.com/ Gurus / articles / 112.asp
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow