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.不熟悉它是如何工作的,但可能适用于此处?
我试图从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) 我正在使用嵌套集(又名修改的预序树遍历)来存储组列表,并且我正在尝试找到一种快速方法来一次为所有组生成面包屑(作为字符串,而不是表格)。我的数据也是使用邻接表模型存储的(有触发器可以保持两者同步)。
例如:
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)
其中代表树:
我希望能够有一个返回表的用户定义函数:
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) 我需要将我的嵌套集结构(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) 如何查询具有多个根的嵌套集模型,例如同一个表中的树?目前,我添加了一个名为"Root"的额外列,表示所有子树节点的根节点的ID,但是,我无法找出sql以正确的顺序检索它们
我指的是管理MySQL中的分层数据这篇文章.
通常,按顺序检索项目的查询是按左叶值的顺序,但是有多个根,你可以一个接一个地结束多个"left:1",这样就打破了树.
我目前正在使用完全与SQL无关的解决方案.我将它们重新安排在我的C#代码中,但我只是想知道是否有办法用SQL来实现它,这样可以节省我在Web服务器上花费的时间
最后一个问题.如果我有一个过滤器,它从树中过滤掉一些数据,你如何处理它?
说
如果过滤器要显示状态为"活动"的所有树,您会怎么做?
我正在使用mySQL创建一个邻接列表,并且不能(至少我自己)做出必要的思考,以便能够移动一组节点(与最终的子节点一起).
该表包含以下列:
id name left right
Run Code Online (Sandbox Code Playgroud)
非常感谢!
在 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 语句之间没有任何变化吗?
在此先感谢您的帮助
如何将新的节点与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)
我需要在表上分配一个触发器来为新节点分配lft并rgt更新所有其他受影响的节点,但是定义节点位置的最佳方法是什么?我可以将parent_id新节点传递给构造函数,但是如何将其传递parent_id给触发器?
我有一个嵌套字典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) 正如标题状态,我想渲染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 之前它不会再次访问数据库。有人可以帮助我解决下一步?
这个问题与站点地图有关。
nested-sets ×10
sql ×5
mysql ×3
php ×2
tree ×2
arrays ×1
asp.net ×1
breadcrumbs ×1
dictionary ×1
doctrine ×1
f# ×1
join ×1
locking ×1
mptt ×1
nested ×1
python ×1
sqlalchemy ×1
symfony ×1
t-sql ×1