De broers en zussen van een bepaald knooppunt zouden dezelfde voorouder hebben. Dit omvat echter zowel "1" als uw lijst:
select t.*
from table t
where t.ancestor = (select ancestor from table t2 where t.id = 2);
In uw tabel weet ik niet zeker wat het betekent voor ancestor
hetzelfde zijn als descendant
. Maar ik denk dat het volgende de vraag is die je wilt:
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;
BEWERKEN:
U kunt dit doen als een expliciete doe zo mee:
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;
Opmerking:ik heb ook de voorwaarde t.id <> 2
. toegevoegd dus "2" wordt niet als een broer of zus van zichzelf beschouwd.