Получить уровень категории

0

В MySql у меня есть таблица категорий с полями:

  • cat_id (int)
  • cat_parent_id (int)
  • cat_name (строка)

Как создать запрос, который возвращает список из всех категорий с соответствующим номером уровня

cat parent_id для корневых узлов - 0

образец SQL Fiddle с образцовыми данными: http://sqlfiddle.com/#!9/ba439ae/3

У меня версия MySql: 5.7.19, а Fiddle - 5.6

  • 0
    Смотрите также много других вопросов с тегом иерархические данные .
  • 0
    @BillKarwin для меня это совершенно другой вопрос. Они ищут крошки. Мне нужна таблица результатов с уровнями для некоторого экспорта ... Зная дублированный вопрос, я, возможно, смогу найти решение для моего случая, но это не дубликат.
Показать ещё 1 комментарий
Теги:
hierarchical-data

1 ответ

1

Попробуй это:

WITH cte AS
(
  SELECT 
    cat_id, 
    cat_parent_id,
    cat_name,
    0 AS level
  FROM category
  WHERE cat_parent_id = 0
  UNION ALL
  SELECT 
    cat.cat_id, 
    cat.cat_parent_id,
    cat.cat_name,
    (level + 1) AS level
  FROM category cat
  INNER JOIN cte c
    ON c.cat_id = cat.cat_parent_id
)

SELECT 
  cat_id, 
  cat_parent_id,
  cat_name,
  level
FROM cte
--ORDER BY level;
  • 0
    ОП сказал, что он использует MyQL 5.7. MySQL не поддерживает синтаксис CTE до 8.0.
  • 0
    ооопс .. Может использовать любой цикл (пока с курсором)?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню