@gpetrov
web-программист

Как посчитать количество записей, у которых нет «родительской» записи?

Доброе утро, коллеги! Задумался над такой задачей. Допустим, есть таблица:

id int(11)
parent_id int(11)
name varchar(128)

Как посчитать количество записей, представляющих "нижний" уровень в "дереве" элементов, то есть которые ни для какой записи не являются родительскими? Для наглядности (на схеме таких элементов 5, выделены красным):

41af3d0c41094233a443a345060158e1.png

Заранее спасибо!
  • Вопрос задан
  • 125 просмотров
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Посчитайте общее количество записей и вычтите количество уникальных parent_id.
Ответ написан
Melkij
@Melkij
PostgreSQL DBA
select id, name from tablename as root where not exists (
    select 1 from tablename as childs where childs.parent_id = root.id
)

Или аналогичным по смыслу left join'ом.
Ответ написан
sanek_os9
@sanek_os9
Работаю с Laravel, Vue, Vuetify, AWS Amazon, Linux
Вот вариант с JOIN
SELECT COUNT(*) FROM `tablename` AS root 
LEFT JOIN `tablename` AS childs ON `root`.`id` = `childs`.`parent_id`
 WHERE `childs`.`parent` IS NULL
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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