@zer1

Как составить такой SQL запрос?

Дана таблица в базе MySQL с полями:
id - ключ
name имя,
parent ссылка на id родителя,
Из таблицы сделать выборку записей без родителей, с тремя и более потомками
  • Вопрос задан
  • 388 просмотров
Пригласить эксперта
Ответы на вопрос 3
evgeniy2194
@evgeniy2194
PHP, js developer
SELECT t1.*, count(t2.*) as count FROM t1 
    INNER JOIN t2 ON t1.id = t2.parent 
        WHERE t1.parent IS NULL
            GROUP BY t2.parent
                HAVING count > 3


Не проверял, но как-то так)
Ответ написан
@d-stream
Готовые решения - не подаю, но...
select 
table.id, min(table.name)
from table
left join table as t2 on t2.paren=table.id
where table.parent is null
group by table.id
having count(t2.parent)>=3


до MySQL доточить по вкусу и сдать домашнее задание -)
Ответ написан
Комментировать
Для иерархии глубиной 6 элементов (максимум) подойдёт следующий запрос:
SELECT
  t1.*
  , count(t2.id) AS count
FROM
  table AS t1
INNER JOIN
  table AS t2 on t1.id = t2.parent
INNER JOIN
  table AS t3 on t2.id = t3.parent
INNER JOIN
  table AS t4 on t3.id = t4.parent
INNER JOIN
  table AS t5 on t4.id = t5.parent
INNER JOIN
  table AS t6 on t5.id = t6.parent
WHERE
  t1.parent IS NULL
GROUP BY
  t1.id
HAVING
  count(t2.id) >= 3
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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