标签: nested-sets

在SQL中连接表时出现问题

SELECT MID, FAD.FirstOpenedDate ,LCD.LastCloseDate
FROM mwMaster.dbo.Merchant M
JOIN        (
            SELECT MerchID, MIN(moddate) AS FirstOpenedDate
            FROM mwMaster.dbo.MerchantStatusHistory
            GROUP BY MerchID
            )   FAD ON FAD.MerchID = M.MerchID 
LEFT JOIN   (
            SELECT MerchID, MAX(moddate) AS LastCloseDate
            FROM mwMaster.dbo.MerchantStatusHistory
            GROUP BY MerchID
            )   LCD ON LCD.MerchID = M.MerchID
JOIN        (
            SELECT merchid ,avg(Transactions) ,avg(Profit) 
            FROM mwMaster.dbo.ResidualSummary RS
            WHERE RS.Date_Processed < LCD.LastCloseDate
            GROUP BY Merchid    
            )   R ON R.MerchID = M.MerchID 
Run Code Online (Sandbox Code Playgroud)

我在执行以下加入时遇到问题.我之前遇到过这个问题并使用临时表但想知道我做错了什么.基本上不起作用的线是倒数第三."<LCD.LastClostDate"表示无法绑定.是否可以使用我在上面的嵌套查询中创建的LCD值(在该查询中我以类似的方式使用M表,但我没遇到任何问题)?我在想,因为LCD表是动态创建的,它不能在嵌套查询中使用,但这只是我的猜测.

有任何想法吗?

另外,我还看到人们使用CROSS和OVER.不熟悉它是如何工作的,但可能适用于此处?

sql t-sql join nested-sets

5
推荐指数
1
解决办法
131
查看次数

移动"root"或父节点 - Doctrine NestedSet扩展

我试图从gedmo 嵌套集扩展博客复制示例,其中有许多父节点.在那里,你可以创建许多可移动的父节点以及儿童(这是典型的一组嵌套的维基百科).

阅读评论部分,常见的建议是删除@Gedmo\TreeRoot annotation/mapping,但如果我这样做,我就能够移动根节点,但树会被打破特别是左右id.如果我保留TreeRoot,并尝试移动根节点,我会得到"没有节点兄弟"或类似的东西,如预期的那样.

查看扩展程序博客上的实例,您可以看到您可以创建没有父级的类别并向上或向下移动它.

我的类别实体 - 相关部分:

class Category 
{
    /**
     * @Gedmo\TreeLeft
     * @ORM\Column(name="lft", type="integer")
     */
    private $lft;

    /**
     * @Gedmo\TreeLevel
     * @ORM\Column(name="lvl", type="integer")
     */
    private $lvl;

    /**
     * @Gedmo\TreeRight
     * @ORM\Column(name="rgt", type="integer")
     */
    private $rgt;

    /**
     * @Gedmo\TreeRoot
     * @ORM\Column(name="root", type="integer", nullable=true)
     */
    private $root;

    /**
     * @Gedmo\TreeParent
     * @ORM\ManyToOne(targetEntity="Category", inversedBy="children")
     */
    private $parent;

    /**
     * @ORM\OneToMany(targetEntity="Category", mappedBy="parent")
     * @ORM\OrderBy({"lft" = "ASC"})
     * @Exclude
     */ …
Run Code Online (Sandbox Code Playgroud)

php mysql doctrine nested-sets symfony

5
推荐指数
1
解决办法
3370
查看次数

查找嵌套集的面包屑

我正在使用嵌套集(又名修改的预序树遍历)来存储组列表,并且我正在尝试找到一种快速方法来一次为所有组生成面包屑(作为字符串,而不是表格)。我的数据也是使用邻接表模型存储的(有触发器可以保持两者同步)。

例如:

ID   Name    ParentId  Left   Right
0    Node A  0         1      12
1    Node B  0         2      5
2    Node C  1         3      4
3    Node D  0         6      11
4    Node E  3         7      8
5    Node F  4         9      9
Run Code Online (Sandbox Code Playgroud)

其中代表树:

  • 节点A
    • 节点B
      • 节点 C
    • 节点 D
      • 节点E
      • 节点 F

我希望能够有一个返回表的用户定义函数:

ID  Breadcrumb
0   Node A
1   Node A > Node B
2   Node A > Node B > Node C
3   Node A > Node D …
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2005 breadcrumbs mptt nested-sets

4
推荐指数
1
解决办法
4784
查看次数

嵌套集,php数组和转换

我需要将我的嵌套集结构(mysql)转换为json用于此spacetree 1)http://blog.thejit.org/wp-content/jit-1.0a/examples/spacetree.html

我发现这个函数可以从嵌套集创建一个数组:2)http://semlabs.co.uk/journal/converting-nested-set-model-data-in-to-multi-dimensional-arrays-in-php

我还可以使用PHP函数json_encode将php数组转换为json

我的问题:函数nestify(来自第二个链接)给了我不完全我需要的东西.我需要这样的东西:http://pastebin.com/m68752352

你能帮助我改变"nestify"功能吗?它能给我正确的数组吗?

这是此功能的一次:

function nestify( $arrs, $depth_key = 'depth' )
    {
        $nested = array();
        $depths = array();

        foreach( $arrs as $key => $arr ) {
            if( $arr[$depth_key] == 0 ) {
                $nested[$key] = $arr;
                $depths[$arr[$depth_key] + 1] = $key;
            }
            else {
                $parent =& $nested;
                for( $i = 1; $i <= ( $arr[$depth_key] ); $i++ ) {
                    $parent =& $parent[$depths[$i]];
                }

                $parent[$key] = $arr;
                $depths[$arr[$depth_key] + 1] = $key;
            }
        } …
Run Code Online (Sandbox Code Playgroud)

php arrays nested-sets

4
推荐指数
1
解决办法
7019
查看次数

如何查询具有多个根和过滤的嵌套集模型

如何查询具有多个根的嵌套集模型,例如同一个表中的树?目前,我添加了一个名为"Root"的额外列,表示所有子树节点的根节点的ID,但是,我无法找出sql以正确的顺序检索它们

我指的是管理MySQL中的分层数据这篇文章.

通常,按顺序检索项目的查询是按左叶值的顺序,但是有多个根,你可以一个接一个地结束多个"left:1",这样就打破了树.

我目前正在使用完全与SQL无关的解决方案.我将它们重新安排在我的C#代码中,但我只是想知道是否有办法用SQL来实现它,这样可以节省我在Web服务器上花费的时间

最后一个问题.如果我有一个过滤器,它从树中过滤掉一些数据,你如何处理它?

  • 任务1(进行中)
    • 任务2(主动)
      • 任务3(主动)

如果过滤器要显示状态为"活动"的所有树,您会怎么做?

sql asp.net nested-sets

4
推荐指数
1
解决办法
2750
查看次数

在嵌套集树中移动节点

我正在使用mySQL创建一个邻接列表,并且不能(至少我自己)做出必要的思考,以便能够移动一组节点(与最终的子节点一起).

该表包含以下列:

 id     name     left     right
Run Code Online (Sandbox Code Playgroud)

非常感谢!

mysql tree nested nested-sets hierarchical-data

4
推荐指数
1
解决办法
6482
查看次数

在以下情况下是否需要表锁来保持数据完整性

在 MySQL 中,我有一个由嵌套集表示的树。嵌套集的操作需要修改表中的多行。例如,向树中添加一个节点将需要对左右值重新排序...

SELECT @myLeft := lft FROM folders WHERE ID = ?;
UPDATE folders SET rgt = rgt + 2 WHERE rgt > @myLeft;
UPDATE folders SET lft = lft + 2 WHERE lft > @myLeft;
Run Code Online (Sandbox Code Playgroud)

目前我正在将其包装在交易中。但是,我想知道...事务是否足以确保数据完整性?

我担心因为有两个单独的 UPDATE 语句,在高容量环境中这可能会导致问题......我还应该锁定表,以确保这两个 UPDATE 语句之间没有任何变化吗?

在此先感谢您的帮助

mysql sql locking nested-sets

4
推荐指数
1
解决办法
421
查看次数

嵌套集模型和SQLAlchemy - 添加新节点

如何将新的节点与SQLAlchemy一起添加到使用嵌套集模型实现的树中?

class Category(Base):
    __tablename__ = 'categories'

    id = Column(Integer, primary_key=True)
    name = Column(String(128), nullable=False)
    lft = Column(Integer, nullable=False, unique=True)
    rgt = Column(Integer, nullable=False, unique=True)
Run Code Online (Sandbox Code Playgroud)

我需要在表上分配一个触发器来为新节点分配lftrgt更新所有其他受影响的节点,但是定义节点位置的最佳方法是什么?我可以将parent_id新节点传递给构造函数,但是如何将其传递parent_id给触发器?

python sql tree sqlalchemy nested-sets

3
推荐指数
1
解决办法
3271
查看次数

在f#Map <'a,Map <'b,'T >>)中反转嵌套字典 - > Map <'b,Map <'a,'T >>

我有一个嵌套字典Map<'a,Map<'b,'T>>,因此对于组合a*b,条目是唯一的.

为了有效地进行预计算,我需要反转一个中的键 Map<'b,Map<'a,'T>>

我有一些更高阶的方法来完成这项工作(|/>将在嵌套序列|//>中应用相同的操作,但是2级深度,|*>将枚举嵌套序列的笛卡尔积),但我想知道是否有更好的方法来执行此操作,以防万一有漂亮的代码分享这个.

let reversenmap (x:Map<'a,Map<'b,'T>>) :Map<'b,Map<'a,'T>> = 
      let ret  = x |> Map.toSeq |/> Map.toSeq |*> squash12
      let ret2 = ret |> Seq.groupByn2 (fun (a,b,t) -> b) 
                                      (fun (a,b,t) -> a) |//> Seq.head 
                                                         |//> (fun (a,b,c) -> c)
      ret2 |> Seq.toMapn2
Run Code Online (Sandbox Code Playgroud)

f# dictionary nested-sets higher-order-functions

3
推荐指数
2
解决办法
469
查看次数

如何从awesome_nested_set 渲染一棵树并且只访问数据库一次?

正如标题状态,我想渲染ul-li基于一个-树awesome_nested_set模型,并击中了数据库只有一次。我正在使用 Ruby on Rails 4.1。

我的查询如下所示:

Page.root.self_and_descendants.where('depth < ?', 2)
Run Code Online (Sandbox Code Playgroud)

这样做的有效方法是什么?

如何在不丢失 where 条件的情况下递归遍历它?例如,当我询问每个Page实例时,如果它是叶子 ( page_instance.leaf?),那么它不会在深度为 2 处停止,但在我挖掘深度超过 2 之前它不会再次访问数据库。有人可以帮助我解决下一步?

这个问题与站点地图有关。

ruby-on-rails nested-sets awesome-nested-set

3
推荐指数
1
解决办法
1393
查看次数