[SQL] Usuwanie danych rekordów

0

Witam,
Mam problem z usunięciem danych rekordów w bazie.

DELETE FROM tabela WHERE exists(SELECT * from (

SELECT * FROM  tabela AS t1
                                          RIGHT JOIN  tabela AS t2 ON ( t2.parent_id = t1.id ) 
                                          RIGHT JOIN  tabela AS t3 ON ( t3.parent_id = t2.id ) 
                                          RIGHT JOIN  tabela AS t4 ON ( t4.parent_id = t3.id ) 
                                          RIGHT JOIN  tabela AS t5 ON ( t5.parent_id = t4.id )
                                          RIGHT JOIN  tabela AS t6 ON ( t6.parent_id = t5.id )
                                          RIGHT JOIN  tabela AS t7 ON ( t7.parent_id = t6.id )
                                          RIGHT JOIN  tabela AS t8 ON ( t8.parent_id = t7.id )
                                          WHERE t1.name =  "A"
                                          AND t8.name =  "E"
)as t);

Wyżej wymienione polecenie jest złe, ponieważ baza wywala mi błąd #1060 - Duplicate column name 'id' z którym nie wiem jak sobie poradzić
Stworzyłem pewnego rodzaju drzewko które schematycznie wygląda tak A->B->C->D->E

Każdy z danej posiada własne id, id rodzica oraz pole nazwy.

Samo polecenie

SELECT * FROM  tabela AS t1
                                          RIGHT JOIN  tabela AS t2 ON ( t2.parent_id = t1.id ) 
                                          RIGHT JOIN  tabela AS t3 ON ( t3.parent_id = t2.id ) 
                                          RIGHT JOIN  tabela AS t4 ON ( t4.parent_id = t3.id ) 
                                          RIGHT JOIN  tabela AS t5 ON ( t5.parent_id = t4.id )
                                          RIGHT JOIN  tabela AS t6 ON ( t6.parent_id = t5.id )
                                          RIGHT JOIN  tabela AS t7 ON ( t7.parent_id = t6.id )
                                          RIGHT JOIN  tabela AS t8 ON ( t8.parent_id = t7.id )
                                          WHERE t1.name =  "A"
                                          AND t8.name =  "E"
;

Wyświetla mi prawidłowo, jednak chciałbym aby własnie te rekordy zostały usunięte.

Proszę o pomoc

1

Zamień:

WHERE EXISTS(SELECT * FROM (
SELECT * FROM  tabela AS t1

na:

WHERE id IN (SELECT id FROM (
SELECT t1.* FROM  tabela AS t1

Powinno pomóc

1 użytkowników online, w tym zalogowanych: 0, gości: 1