Mi do głowy przyszedł tylko jeden brzydki sposób.
Z subselectami ale wydajnościowo to nie wyjdzie dużo lepiej.
SELECT * FROM types t1
WHERE t1.parent_id IN (
SELECT t2.id FROM types t2
WHERE t2.parent_id IN (
SELECT t3.id FROM types t3
WHERE t3.parent_id IN [glowne_id]
)
) OR t1.id IN (
SELECT t2.id FROM types t2
WHERE t2.parent_id IN (
SELECT t3.id FROM types t3
WHERE t3.parent_id IN [glowne_id]
)
) OR t1.id IN (
SELECT t3.id FROM types t3
WHERE t3.parent_id IN [glowne_id]
) OR t1.id = [glowne_id]
Wydaje mi się że to zadziała i że jednak jest coś prostszego...