Справка по циклу CategoryID / ParentCategoryID

#sql #categories

#sql #Категории

Вопрос:

Как вам удается генерировать список с вкладками из CategoryID / ParentCategoryID самым простым способом? Я не эксперт по SQL, но логически это очень сложно для меня..

Можно ли это сделать с помощью 1 или 2 инструкций SQL, может быть, сработает Do / Loop For / Next?

Список должен выглядеть следующим образом:

Категория -Подкатегория —подсубкатегория —Бесконечные подсубкатегории

Категория -и т.д. —и т.д…

Ответ №1:

Прочитайте о том, что называется «Таблицы замыкания». Это может облегчить вам выполнение некоторых задач.

Ответ №2:

Это, безусловно, непростая проблема (если производительность имеет какое-либо значение), поэтому было бы неплохо ознакомиться с некоторыми из решений, которые разбросаны по Интернету.

Для простого (и совсем не подходящего для задач, где важна производительность) вы можете сделать это:

 function readChildrenNodes(parentNode) {
    newNodes = sql_db.get("SELECT * FROM nodes WHERE parent=" parentNode.id);
    parentNode.appendChildren(newNodes);
    for node in newNodes
        readChildrenNodes(node);
}
  

Комментарии:

1. parentNode = ParentCategoryID, Node=CategoryID. Легче говорить об узлах, потому что то, что вы описываете, представляет собой древовидную структуру, это математическое соглашение.

2. Знаете ли вы это в VBScript, классическом ASP?

3. Я никогда не использовал эти языки, но вы можете написать мой псевдокод на любом языке, который вы хотите.