Количество продуктов вложенного набора SQL поддерева - PullRequest
0 голосов
/ 28 февраля 2010

См. http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

Под заголовком «Совокупные функции во вложенном множестве»

Я пытаюсь обработать запрос, похожий на приведенный пример, за исключением того, что я хочу, чтобы он работал на уровне поддеревьев, поэтому, если бы я запрашивал MP3-плееры, я получил бы такой набор результатов, как;

|NAME          |COUNT|
----------------------
|MP3 PLAYERS   |  2  | // 2 because 1 at this level and 1 at child level  
|FLASH PLAYERS |  1  |

1 Ответ

0 голосов
/ 24 сентября 2010

Предполагается, что самореферентная таблица tree_node создается следующим образом:

CREATE TABLE tree_node
(
  id serial NOT NULL,
  parent integer,
  "desc" text,
  l integer,
  r integer,
  CONSTRAINT tree_node_pkey PRIMARY KEY (id)
);

Счет может быть получен с помощью следующего SQL:

select count(*), p.id, p.desc from tree_node c, tree_node p
where c.l<=p.r
and c.l>=p.l
group by p.id, p.desc;
...