यहाँ एक समाधान है:
select p1.* from tree_path as p1
left outer join (tree_path as p2 join tree_path as p3 on p2.children = p3.parent)
on p2.parent = p1.parent
and p3.children = p1.children
and p2.parent <> p2.children
and p3.parent <> p3.children
where p1.parent = 3 and p2.parent is NULL;
+----------+--------+
| children | parent |
+----------+--------+
| 3 | 3 |
| 7 | 3 |
| 8 | 3 |
+----------+--------+
p1.parent=7 बदलें और आपको यह आउटपुट मिलेगा:
+----------+--------+
| children | parent |
+----------+--------+
| 7 | 7 |
| 15 | 7 |
| 16 | 7 |
+----------+--------+
यह जिस तरह से काम करता है:तत्काल बच्चे वंशज होते हैं जहां माता-पिता से बच्चे तक का रास्ता होता है, लेकिन माता-पिता से तीसरे नोड के माध्यम से बच्चे तक कोई रास्ता नहीं होता है। इसलिए हम ऐसे पथ (p2->p3) से जुड़ने का प्रयास करते हैं और यदि कोई नहीं मिलता है, तो p2 और p3 के सभी कॉलम NULL होंगे।