Stanislav108
@Stanislav108

SQL-запрос. Как сделать выборку записей с 2-мя старшими родителями, но без потомков?

Есть таблица test_table, в которой 3 поля: *id(int), name(text), parent_id(int). Пример заполнения таблицы:

cfcd2
  ->d3d94
  ->6512b
    ->c74d9
    ->a5771
  ->4e732
    ->6ea9a
  ->d6459
c4ca4
  ->c20ad
    ->c51ce
    ->3c59d
  ->37693
  ->aab32
c81e7
eccbc
  ->67c6a
a87ff

Что-то недопонимаю, честно говоря. Мой запрос?

select t1.* from `test_table` t1 left join `test_table` t2 on t2.id=t1.parent left join `test_table` t3 on t3.id=t2.parent where (t1.parent>0)


Забрать записи с 2мя старшими родителями у меня получается, а вот чтобы они при этом еще и без потомков были, вот тут проблема возникла... Пытался к where добавить дополнительное условие с запросом ((select count(t4.*) from test_table where (t4.parent=t1.id))=0) , но мускуль не пускает :(

В общем, хелп ми, пожалуйста :)
  • Вопрос задан
  • 243 просмотра
Решения вопроса 1
@res2001
Developer, ex-admin
Возможно так:

select t1.* from `test_table` t1
join `test_table` t2 on t2.id=t1.parent
join `test_table` t3 on t3.id=t2.parent
left join 'test_table' t4 on t4.parent=t1.id
where t4.id is null
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы