【问题标题】:Product count of a subtree SQL nested set子树 SQL 嵌套集的产品计数
【发布时间】:2010-02-28 00:10:57
【问题描述】:

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  |

【问题讨论】:

    标签: sql mysql nested-sets


    【解决方案1】:

    假设自引用表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;
    

    【讨论】:

    • 我希望这个节点可能有多个父节点,因此添加父字段并不理想。我在上面的 url 中定义了表结构。 CREATE TABLE category(category_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL, parent INT DEFAULT NULL);
    • 它的多个父母的作品都在一个树形结构中。查询显示记录、子、孙、曾孙等,曾孙有多级父数据。如果这不能满足您的要求,请说明情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多