Справка с записью SQL-запроса для Вложенных Наборов

Ну, SIZE, вероятно, не макрос, потому что здесь вы инициализируете его с 10 и имеете его как переменную. Если бы это был макрос, ваше выражение int a[SIZE] сработало бы, но вам все равно не понадобились бы строки 2-4.

Если SIZE является, как здесь, нормальной переменной (которая включает в себя динамическое создание A с параметром размера, , хотя входные данные могут быть из макроса), вы должны использовать вектор.

#include <vector>

class A {
  const int SIZE;

  A() : SIZE(10) {}
  void aaa() { std::vector<int> a(SIZE); }
};

Использование a теперь то же самое.

5
задан 25 November 2008 в 03:19
поделиться

1 ответ

Статья Managing Hierarchical Data в MySQL дает яркий пример того, как использовать Вложенные Наборы и дает примеры многих общих запросов, включая этого.

вот то, как найти непосредственных детей узла:

SELECT node.name, (COUNT(parent.name) - (sub_tree.depth + 1)) AS depth
FROM nested_category AS node,
    nested_category AS parent,
    nested_category AS sub_parent,
    (
        SELECT node.name, (COUNT(parent.name) - 1) AS depth
        FROM nested_category AS node,
        nested_category AS parent
        WHERE node.lft BETWEEN parent.lft AND parent.rgt
        AND node.name = '**[[MY NODE]]**'
        GROUP BY node.name
        ORDER BY node.lft
    )AS sub_tree
WHERE node.lft BETWEEN parent.lft AND parent.rgt
    AND node.lft BETWEEN sub_parent.lft AND sub_parent.rgt
    AND sub_parent.name = sub_tree.name
GROUP BY node.name
HAVING depth = 1
ORDER BY node.lft;

и затем объединение, что с тем, что вершина будет иметь rgt равный lft + 1, и Вы установлены. простите игру слов.

5
ответ дан 14 December 2019 в 19:29
поделиться
Другие вопросы по тегам:

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