الاستعلام عن علاقات الوالدين والطفل بكفاءة
-
19-09-2019 - |
سؤال
على افتراض أن لديك جدول قاعدة البيانات التالي:
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
هذا يسمح بتعريف أسماء هرمية. يمكن أن يكون لكل اسم اسم أحد الوالدين وأي عدد من أسماء الأطفال.
أرغب في العثور على السجل المقابل لاسم مؤهل مثل "A: B: C"، حيث تقوم Colons Delimit بكل اسم. لقد فعلت ذلك حاليا باستخدام 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
ما أتساءله هو ما إذا كانت هناك طريقة أكثر فعالية للقيام بذلك لا تنطوي على تنشرا للبيانات أو أخذ تبعية صلبة على أي مواد DBMS معينة.
شكرا
المحلول
قد ترغب في قراءة هذا: http://www.developersdex.com/gurus/articles/112.asp.
لا تنتمي إلى StackOverflow