किसी दिए गए नोड के भाई-बहनों का पूर्वज एक ही होगा। हालांकि, इसमें "1" के साथ-साथ आपकी सूची भी शामिल होगी:
select t.*
from table t
where t.ancestor = (select ancestor from table t2 where t.id = 2);
आपकी तालिका में, मुझे यकीन नहीं है कि ancestor
. के लिए इसका क्या अर्थ है? descendant
. के समान होने के लिए . लेकिन, मुझे लगता है कि निम्नलिखित वह प्रश्न है जो आप चाहते हैं:
select t.*
from table t
where t.ancestor = (select ancestor from table t2 where t2.id = 2) and
t.ancestor <> t.descendant and
t.id <> 2;
संपादित करें:
आप इसे स्पष्ट . के रूप में कर सकते हैं इस तरह शामिल हों:
select t.*
from table t join
table t2
on t.ancestor = t2.ancestor and
t2.id = 2 a
where t.id <> 2 and
t.ancestor <> t.descendant;
नोट:मैंने t.id <> 2
. शर्त भी जोड़ी है इसलिए "2" को स्वयं का भाई नहीं माना जाता है।